Yii 2.0 的 Docker 部署,单域名与多域名模式同时支持的实现

1、从多域名模式修改为单域名模式,修改了文件:frontend/config/main.php。如图1

图1

2、从多域名模式修改为单域名模式,修改了文件:etc/nginx/conf.d/ccp_api.conf。如图2

图2

3、现在计划在容器升级时,基于环境变量:CHANNEL_PUB_API_CFG_FRONTEND_DOMAIN_MODE=single|multiple。默认:single。可切换域名模式。

4、决定准备多域名下的两份文件,基于 shell 脚本,判断环境变量:CHANNEL_PUB_API_CFG_DOMAIN_NAME_MODE=multiple,执行文件拷贝。

5、编辑 shell 脚本,/config/init/config.sh。放在其他 shell 脚本之前。如图3

图3

#!/bin/bash
env | grep CHANNEL_PUB_API_CFG_FRONTEND_DOMAIN_MODE || export CHANNEL_PUB_API_CFG_FRONTEND_DOMAIN_MODE="single"
if [[ $CHANNEL_PUB_API_CFG_FRONTEND_DOMAIN_MODE == "multiple" ]]
then
    \cp /mcloud/ccp_api.conf /etc/nginx/conf.d/
    chmod +x /etc/nginx/conf.d/*
    echo "前端的域名模式:多域名,复制 ccp_api.conf 至 /etc/nginx/conf.d/"
    \cp /mcloud/frontend/config/main.php /mcloud/www/ccp_api/frontend/config/
    echo "前端的域名模式:多域名,复制 main.php 至 /mcloud/www/ccp_api/frontend/config/"
elif [[ $CHANNEL_PUB_API_CFG_FRONTEND_DOMAIN_MODE == "single" ]]
then
    echo "前端的域名模式:单域名"
else
    echo "please set environment variable CHANNEL_PUB_API_CFG_FRONTEND_DOMAIN_MODE single or multiple"
fi

6、Nginx 未启动。原因在于 config0.sh 先于 config.sh 执行。将 config.sh 重命名为 ccp_init.sh。

[root@07ca67a1f3c1 conf.d]# nginx -t
nginx: [emerg] host not found in "CHANNEL_PUB_API_CFG_NGINX_AUTH_LISTEN" of the "listen" directive in /etc/nginx/conf.d/ccp_api.conf:2
nginx: configuration file /etc/nginx/nginx.conf test failed
[root@07ca67a1f3c1 conf.d]#

7、Nginx 已启动。如图4

图4

[root@b9b472c89102 /]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@b9b472c89102 /]#

 

永夜