官方文档: https://github.com/yeszao/dnmp
本身默认PHP7.1版本
如果需要同时支持多个版本PHP,需要另外在配置
下面举例子配置多个PHP版本 -- PHP7.4
- dnmp/service目录下复制多一份php目录, 并修改成PHP74
- 根目录下docker-compose.yml 同样复制php配置同一份
注意修改php相关变量、字符串为php74
php74:
build:
context: ./services/php74
args:
PHP_VERSION: php:${PHP74_VERSION}-fpm-alpine
CONTAINER_PACKAGE_URL: ${CONTAINER_PACKAGE_URL}
PHP_EXTENSIONS: ${PHP74_EXTENSIONS}
TZ: "$TZ"
container_name: php74
expose:
- 9501
extra_hosts:
- "www.site1.com:172.17.0.1"
volumes:
- ${SOURCE_DIR}:/www/:rw
- ${PHP74_PHP_CONF_FILE}:/usr/local/etc/php/php.ini:ro
- ${PHP74_FPM_CONF_FILE}:/usr/local/etc/php-fpm.d/www.conf:rw
- ${PHP74_LOG_DIR}:/var/log/php
- ${DATA_DIR}/composer74:/tmp/composer
restart: always
cap_add:
- SYS_PTRACE
networks:
- default
- 根目录下.env 文件同样复制php配置同一份
注意扩展配置的不同
PHP74_VERSION=7.4
PHP74_PHP_CONF_FILE=./services/php/php.ini
PHP74_FPM_CONF_FILE=./services/php/php-fpm.conf
PHP74_LOG_DIR=./logs/php
PHP74_EXTENSIONS=pdo_mysql,mysqli,mbstring,gd,curl,sockets,opcache,rdkafka,redis,pcntl
- 由于按docker-composer up 命令直接全部打包镜像生成容器,会发现php74到swoole扩展并没有生效
所以需要改动php74目录下dockerfile文件, 另外进行编译安装
需要添加以下dockerfile命令
RUN apk --update add --no-cache --virtual .build-deps autoconf g++ libtool make curl-dev gettext-dev linux-headers
RUN wget https://github.com/emcrisostomo/fswatch/releases/download/1.14.0/fswatch-1.14.0.tar.gz \
&& tar -xf fswatch-1.14.0.tar.gz \
&& cd fswatch-1.14.0/ \
&& ./configure \
&& make \
&& make install
RUN docker-php-source extract && \
mkdir /usr/src/php/ext/swoole && \
curl -sfL https://github.com/swoole/swoole-src/archive/v4.7.1.tar.gz -o swoole.tar.gz && \
tar xfz swoole.tar.gz --strip-components=1 -C /usr/src/php/ext/swoole && \
docker-php-ext-configure swoole \
--enable-http2 \
--enable-mysqlnd \
--enable-openssl \
--enable-sockets --enable-swoole-curl --enable-swoole-json && \
docker-php-ext-install -j$(nproc) swoole && \
rm -f swoole.tar.gz $HOME/.composer/*-old.phar && \
docker-php-source delete
RUN docker-php-ext-enable swoole
RUN echo swoole.use_shortname = 'Off' >> /usr/local/etc/php/conf.d/docker-php-ext-swoole.ini && \
cat /usr/local/etc/php/conf.d/docker-php-ext-swoole.ini
- 添加完成执行下命令,测试
默认
$ docker-compose up # 创建并且启动所有容器
$ docker-compose up -d # 创建并且后台运行方式启动所有容器
$ docker-compose up nginx php mysql # 创建并且启动nginx、php、mysql的多个容器
$ docker-compose up -d nginx php mysql # 创建并且已后台运行的方式启动nginx、php、mysql容器
$ docker-compose start php # 启动服务
$ docker-compose stop php # 停止服务
$ docker-compose restart php # 重启服务
$ docker-compose build php # 构建或者重新构建服务
$ docker-compose rm php # 删除并且停止php容器
$ docker-compose down # 停止并删除容器,网络,图像和挂载卷
单独编译调试可以执行
docker-compose stop php74 && docker-compose rm php74 && docker-compose build php74 && docker-compose up -d php74
标签:compose,swoole,--,redis,&&,docker,php
From: https://www.cnblogs.com/smallyi/p/16988145.html