安裝 php 多版本
第一步複製 php-fpm 放到 php-fpm 的下面,修改如下
## php-fpm 7.0
php-fpm70: # 修改名字為 php-fpm70
build:
context: ./php-fpm
args:
# ...
- LARADOCK_PHP_VERSION=7.0 # 直接寫死版本號,或者 .env再加一個變數
# ...
volumes:
# ...
- ./php-fpm/php7.0.ini:/usr/local/etc/php/php.ini # 使用 7.0 的配置檔案
# ...
第二步修改 site 配置檔案
- 方法一,修改站點配置檔案
fastcgi_pass php-upstream;
替換為
fastcgi_pass php-fpm70:9000;
- 方法二
nginx Dockerfile 檔案修改
在這句下面
ARG PHP_UPSTREAM_CONTAINER=php-fpm
增加 php-fpm70 的變數
ARG PHP70_UPSTREAM_CONTAINER=php-fpm70
在這句下面
# Set upstream conf and remove the default conf
RUN echo "upstream php-upstream { server ${PHP_UPSTREAM_CONTAINER}:${PHP_UPSTREAM_PORT}; }" > /etc/nginx/conf.d/upstream.conf \
&& rm /etc/nginx/conf.d/default.conf
增加 php-fpm70
# 寫入 php-fpm70
RUN echo "upstream php70-upstream { server ${PHP70_UPSTREAM_CONTAINER}:${PHP_UPSTREAM_PORT}; }" >> /etc/nginx/conf.d/upstream.conf
然後將站點配置檔案修改為
fastcgi_pass php-upstream;
替換為
fastcgi_pass php70-upstream;
第三步,自動跟隨啟動
docker-compose nginx 模組
depends_on:
- php-fpm
- php-fpm70 # 增加 php-fpm70
安裝 mysql 多版本
這裡假設 latest 對應的是 8.0,現在要安裝 5.7
複製 docker-compose.yml 中 mysql 容器程式碼放到 mysql 的下面,修改如下
### MySQL5.7 ################################################
mysql57: # 容器名字就叫 mysql57
build:
context: ./mysql
args:
- MYSQL_VERSION=5.7 # 這裡直接寫死版本號
environment:
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- TZ=${WORKSPACE_TIMEZONE}
volumes:
- ${DATA_PATH_HOST}/mysql57:/var/lib/mysql # 這裡要把mysql 資料目錄改一下名字,改為mysql57,否則會和預設版本衝突提示無法寫入檔案
- ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
ports:
- "3307:3307" # 這裡將埠對映到主機 3307 埠,並且內部也是用 3307(這樣本地和程式中都使用同一個 3307 埠), 本地埠:容器埠
networks:
- backend
啟動
docker-compose up -d mysql57
可以將 mysql57 新增為 mysql 的依賴項,這樣當啟動 mysql 時,也會自動把 mysql57 啟動
在 mysql 模組的 ports 下面追加
depends_on:
- mysql57
這樣如下命令,將同時啟動 mysql 和 mysql57
docker-compose up -d mysql
本作品採用《CC 協議》,轉載必須註明作者和本文連結