nginx 除非服务B正在运行docker swarm,否则不要启动服务A

mm9b1k5b  于 2023-03-29  发布在  Nginx
关注(0)|答案(1)|浏览(129)

我有一个***nginx_proxy***服务,需要***nginx_1***和***nginx_2***同时运行,如果其中一个没有运行,则***nginx_proxy***会崩溃,因为它可以解析服务的IP
下面是***nginx_proxy***配置:

server {

    listen 80;

    server_name www.app1.com;

    location / {
        proxy_pass http://nginx_1;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host:$server_port;
        proxy_http_version 1.1;
    }
}
server {

    listen 80;

    server_name www.app2.com;

    location / {
        proxy_pass http://nginx_2;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host:$server_port;
        proxy_http_version 1.1;
    }
}

这是堆栈:

version: '3.9'

services:
  nginx_proxy:
    {...}
  nginx_1:
    {...}
  nginx_2:
    {...}

既然***depends_on***在swarm模式下不起作用,而且this solution也会给出services.nginx.depends_on must be a list错误,还有其他选择吗?

tgabmvqs

tgabmvqs1#

我做了一些研究和测试,然后我意识到了一些事情。
根据link
docker stack deploy命令支持任何版本为“3.0”或更高版本的合成文件
根据这个链接:
在swarm模式下使用版本3 Compose文件部署堆栈时,将忽略depends_on选项
所以你现在没有其他选择。

相关问题