文章简介
在后面几篇文章中,咱们应用 dnmp 搭建了一个残缺的 docker 开发环境。这篇文章接着分享如何在 dnmp 的根底上搭建一个自定义的 PHP 容器,实现多版本的 PHP 容器。
后期筹备
首先咱们下载 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;
}
}
最终论断
通过该形式,咱们创立其余的容器也是相似的形式,只有配置好即可。
文章均来自微信公号: 卡二条的技术圈