gpt4 book ai didi

docker - 如果零停机时间容器更新有多个实例,docker-compose 网络别名如何工作?

转载 作者:行者123 更新时间:2023-12-02 11:16:49 28 4
gpt4 key购买 nike

所以我有:

version: "3.6"

services:
nginx:
image: nginx
app:
image: node:latest

我的 nginx 配置是:
upstream project_app {
server app:4000;
}

server {
listen 80;
server_name example.com;

location / {
proxy_pass http://project_app;
}


为了在不停机的情况下更新容器(滚动更新),我首先升级了 app服务于2:
docker-compose up -d --no-deps --scale app=2 --no-recreate app

它将创建 project_app_1沿 project_app .

但是到了这一步,就算新的 project_app_1容器已准备就绪,所有流量都转到 project_app ,以前的容器。

要同时使用它们,我需要运行 docker-compose restart nginx .

现在,流量是路由器到两个 project_appproject_app_1 ,这真的很酷。

我现在准备杀人 project_app现在已经过时了。

我的问题是:
  • nginx被杀后是否需要再次重启,以确保全部 流量被路由到 project_app_1还是有点自动?
  • 事实http://app:4000有效是因为 DNS 主机名配置,对吗?在哪里可以了解更多信息?
  • 如果关闭发现在 nginx 中自动工作,是否有办法使启动发现也自动进行以避免重新启动 nginx,这会导致 2 秒的停机时间?

  • 谢谢

    PS:如果你对我使用的整个脚本感到好奇,我举报了 on the associated github issue .

    最佳答案

    您可以使用:

    upstream project_app {
    server app:4000 down;
    server app1:4000 down;
    }

    如果应用程序关闭,则跳转到应用程序1,如果应用程序已备份,则使用它。

    关于docker - 如果零停机时间容器更新有多个实例,docker-compose 网络别名如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59969907/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com