文章简介

在前面几篇文章中,我们使用dnmp搭建了一个完整的docker开发环境。这篇文章接着分享如何在dnmp的基础上搭建一个自定义的PHP容器,实现多版本的PHP容器。

前期准备

首先我们下载git@github.com:bruceqiq/php_dnmp.git">dnmp仓库。

复制docker-compose.sample.yml文件为docker-compose.yml

cp docker-compose.sample.yml docker-compose.yml

复制env.sample为.env

cp env.sample ./env

修改配置

首先我们根据需要在.env文件中配置好PHP容器需要映射的端口等信息。添加如下配置(可放在任意位置):

#

# PHP73

#

PHP73_VERSION=7.3.22

PHP73_PHP_CONF_FILE=./services/php73/php.ini

PHP73_FPM_CONF_FILE=./services/php73/php-fpm.conf

PHP73_LOG_DIR=./logs/php

PHP73_EXTENSIONS=pdo_mysql,mysqli,mbstring,gd,curl,opcache

PHP_SWOOLE1_PORT=9504

PHP_SWOOLE2_PORT=9505

PHP_SWOOLE3_PORT=9506

PHP_SWOOLE4_PORT=9507

PHP_SWOOLE5_PORT=9508

PHP_SWOOLE6_PORT=9509

这里的swoole可以根据自己的需要定义,比如你只需要映射一个端口9505,直接值配置一个9504。只需要与下面的.docker-compose.yml一一对应起来即可。

接下来,配置doker-compose.yml文件。只需要添加如下内容即可:

php73:

build:

context: ./services/php

args:

PHP_VERSION: php:${PHP73_VERSION}-fpm-alpine

CONTAINER_PACKAGE_URL: ${CONTAINER_PACKAGE_URL}

PHP_EXTENSIONS: ${PHP56_EXTENSIONS}

TZ: "$TZ"

container_name: php73

ports:

- "${PHP_SWOOLE1_PORT}:9504"

- "${PHP_SWOOLE2_PORT}:9505"

- "${PHP_SWOOLE3_PORT}:9506"

- "${PHP_SWOOLE4_PORT}:9507"

- "${PHP_SWOOLE5_PORT}:9508"

- "${PHP_SWOOLE6_PORT}:9509"

这里的container_name可以根据自己的需要来配置,建议根据你的PHP版本号定义容器名字。

安装容器

通过上面简单的配置,我们接下来运行如下命令,就可以搭建一个完整的PHP容器了:

docker-compose up

安装完之后,查看效果:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

0e1376e67300 dnmp_php73 "docker-php-entrypoi…" 35 hours ago Up 42 minutes 9000/tcp, 0.0.0.0:9504-9509->9504-9509/tcp php73

证明我们的自定义容器安装成功了,接下来,我们就配置nginx如何使用该容器。

使用容器

使用该容器超级简单,只需要在nginx配置时,指向我们创建好的容器即可。

server {

listen 80;

server_name baidu.com;

root /www/mini-program-server/web;

index index.php index.html;

access_log /var/log/nginx/nginx.baidu.error.log;

error_log /var/log/nginx/nginx.baidu.access.log;

include rewrite/thinkphp.conf;

location ~ \.php$ {

# 只需要将这里的PHP73写成我们创建好的容器名称即可。

fastcgi_pass php73:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

}

最终结论

通过该方式,我们创建其他的容器也是类似的方式,只要配置好即可。

本作品采用《CC 协议》,转载必须注明作者和本文链接

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐