在前面幾篇文章中,咱們使用dnmp搭建了一個完整的docker開發環境。這篇文章接着分享如何在dnmp的基礎上搭建一個自定義的PHP容器,實現多版本的PHP容器。php
首先咱們下載dnmp倉庫。
複製docker-compose.sample.yml文件爲docker-compose.ymlhtml
cp docker-compose.sample.yml docker-compose.yml
複製env.sample爲.envmysql
cp env.sample ./env
首先咱們根據須要在.env文件中配置好PHP容器須要映射的端口等信息。添加以下配置(可放在任意位置):nginx
# # 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文件。只須要添加以下內容便可:web
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容器了:sql
docker-compose up
安裝完以後,查看效果:docker
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如何使用該容器。thinkphp
使用該容器超級簡單,只須要在nginx配置時,指向咱們建立好的容器便可。shell
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; } }
經過該方式,咱們建立其餘的容器也是相似的方式,只要配置好便可。微信
文章均來自微信公號:卡二條的技術圈