在主机容器不可用的情况下启动 nginx

在主机容器不可用的情况下启动 nginx

对于本地开发,我有一套包含 5 个站点的套件。

每个站点都在自己的 php-fpm 容器中运行。

所有站点均由单个 nginx 容器提供服务,其中包含.conf所有站点的文件。它们共享端口,并由 server_name 标识。

问题

为了启动 nginx 容器,所有 5 个 php-fpm 容器必须已经运行。

如果其中一个没有运行,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 容器的名称。

期望的行为

  • 只要其容器正在运行,任何站点都应该可以工作。
  • 如果已配置站点之一的容器未运行,则不应阻止 nginx 容器启动并为其他站点提供服务。
  • 如果站点的容器在 nginx 启动后启动,则 nginx 应该能够为其提供服务。

相关内容