ホストコンテナが利用できない場合はnginxを起動する

ホストコンテナが利用できない場合はnginxを起動する

ローカル開発のために5つのサイトで構成されたスイートがあります。

各サイトは独自のphp-fpmコンテナで実行されます。

.confすべてのサイトは、すべてのサイトのファイルを含む単一のnginxコンテナから提供されます。これらはポートを共有し、server_nameによって識別されます。

質問

nginxコンテナを起動するには、5つのphp-fpmコンテナがすべてすでに実行されている必要があります。

そのうちの1つが実行されていない場合、nginxコンテナはログに次の内容を含むループで失敗します。

2023-03-28 12:39:28 meq_nginx  | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
2023-03-28 12:39:28 meq_nginx  | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
2023-03-28 12:39:28 meq_nginx  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
2023-03-28 12:39:28 meq_nginx  | 10-listen-on-ipv6-by-default.sh: info: /etc/nginx/conf.d/default.conf is not a file or does not exist
2023-03-28 12:39:28 meq_nginx  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
2023-03-28 12:39:28 meq_nginx  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
2023-03-28 12:39:28 meq_nginx  | /docker-entrypoint.sh: Configuration complete; ready for start up
2023-03-28 12:39:28 meq_nginx  | 2023/03/28 16:39:28 [emerg] 1#1: host not found in upstream "mysite" in /etc/nginx/conf.d/mysite.conf:29
2023-03-28 12:39:28 meq_nginx  | nginx: [emerg] host not found in upstream "mysite" in /etc/nginx/conf.d/mysite.conf:29

/etc/nginx/conf.d/mysite.conf:29 のアップストリーム 'mysite' にホストが見つかりません。

次の設定を参照してください。

server {
    listen 443 ssl http2;

    location ~ ^/index\\.php(/|$) {
        fastcgi_pass mysite:9000;
...

...ここで、「mysite」はまだ起動していないphp-fpmコンテナの名前です。

望む行動

  • すべてのサイトは、コンテナが実行されている限り機能する必要があります。
  • 設定されたサイトの1つに対してコンテナが実行されていない場合は、nginxコンテナが他のサイトを起動して提供するのを妨げてはいけません。
  • nginxの起動後にサイトのコンテナが起動したら、nginxがそれを提供できる必要があります。

関連情報