因为hyperf3.X版本需要php版本至少为8.1.X,所以添加php8.1的镜像
一、复制services下的php80
文件夹为php81
二、修改php81下的dockerfile
ARG PHP_VERSION
FROM ${PHP_VERSION}
ARG TZ
ARG PHP_EXTENSIONS
ARG CONTAINER_PACKAGE_URL
RUN if [ $CONTAINER_PACKAGE_URL ] ; then sed -i "s/dl-cdn.alpinelinux.org/${CONTAINER_PACKAGE_URL}/g" /etc/apk/repositories ; fi
COPY ./extensions /tmp/extensions
WORKDIR /tmp/extensions
RUN chmod +x install.sh \
&& sh install.sh \
RUN apk upgrade --no-cache && \
apk add --no-cache openssl libgcc libstdc++ #swoole需要libstdc++
ADD ./extensions/install-php-extensions /usr/local/bin/
RUN chmod uga+x /usr/local/bin/install-php-extensions
RUN install-php-extensions swoole pcntl #安装swoole和pcntl扩展
RUN apk --no-cache add tzdata \
&& cp "/usr/share/zoneinfo/$TZ" /etc/localtime \
&& echo "$TZ" > /etc/timezone
# Fix: https://github.com/docker-library/php/issues/240
RUN apk add --no-cache --repository http://${CONTAINER_PACKAGE_URL}/alpine/v3.18/community/ gnu-libiconv=1.17-r1
ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so php
# Install composer and change it's cache home
RUN curl -o /usr/bin/composer https://mirrors.aliyun.com/composer/composer.phar \
&& chmod +x /usr/bin/composer
ENV COMPOSER_HOME=/tmp/composer
# php image's www-data user uid & gid are 82, change them to 1000 (primary user)
RUN apk --no-cache add shadow && usermod -u 1000 www-data && groupmod -g 1000 www-data
WORKDIR /www
三、修改docker-compose.yml,增加php81
php81:
build:
context: ./services/php81
args:
PHP_VERSION: php:${PHP81_VERSION}-fpm-alpine3.16
CONTAINER_PACKAGE_URL: ${CONTAINER_PACKAGE_URL}
PHP_EXTENSIONS: ${PHP81_EXTENSIONS}
TZ: "$TZ"
container_name: php81
ports:
- "9507:9507"
- "9508:9508"
expose:
- 9507
- 9508
extra_hosts:
- "www.hadmin3.dev:172.18.0.1"
volumes:
- ${SOURCE_DIR}:/www/:rw
- ${PHP81_PHP_CONF_FILE}:/usr/local/etc/php/php.ini:ro
- ${PHP81_FPM_CONF_FILE}:/usr/local/etc/php-fpm.d/www.conf:rw
- ${PHP81_LOG_DIR}:/var/log/php
- ${DATA_DIR}/composer:/tmp/composer
restart: always
cap_add:
- SYS_PTRACE
networks:
- default
四、修改.env配置,增加php81部分
# PHP8.1.8
PHP81_VERSION=8.1.8
PHP81_PHP_CONF_FILE=./services/php81/php.ini
PHP81_FPM_CONF_FILE=./services/php81/php-fpm.conf
PHP81_LOG_DIR=./logs/php81
PHP81_EXTENSIONS=pdo_mysql,mysqli,mbstring,gd,curl,opcache,redis,swoole
五、启动docker,并启动hyperf
docker-compose up
docker exec -it php81
cd 3.0.1
php bin/hyperf.php start
image.png