gpt4 book ai didi

docker - 立即部署镜像的新版本

转载 作者:行者123 更新时间:2023-12-02 18:56:11 24 4
gpt4 key购买 nike

我想同时在同一台计算机上运行3个版本的容器。像这样:

  • 版本v7(阶段)
  • 版本v6(实时)
  • 版本v5(旧)

  • 那么我想将此映射到3个网址:
  • v7.example.com
  • v6.example.com
  • v5.example.com

  • 另外,第四个网址是指当前(或默认)版本:

    www.example.com(映射到http:// v6 .mydomain.com)

    大概我可以采取一些配置步骤,将“默认”版本从v6更改为v7。希望这一步骤应该是瞬时的和原子的。

    想法是,部署应用程序的下一个版本是与激活该版本不同的步骤(通过激活,我的意思是将该版本设置为默认版本)。

    因此,推出(或回滚)仅是将默认版本更改为下一个(或上一个)版本的问题。

    Google App Engine支持这种模式,我非常喜欢它。

    有人使用Docker设置过类似的东西吗?我将不胜感激任何建议如何做。谢谢。

    最佳答案

    我将在运行您的webapp的容器前面使用反向代理来执行此操作。

    使用jwilder/nginx-proxy图片的示例

    假设您的Docker主机IP地址为11.22.33.44

    假设您的docker镜像为:

    v5的

  • mywebapp:5
  • v6的
  • mywebapp:6
  • v7的
  • mywebapp:7

  • 首先,请确保已设置DNS,以便 v5.example.comv6.example.comv7.example.comwww.example.com都解析为 11.22.33.44

    在您的Docker主机上启动jwilder / nginx-proxy:
    docker run -d --name reverseproxy -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro -e DEFAULT_HOST=www.example.com jwilder/nginx-proxy

    将v6设置为默认值

    启动webapps容器:
    docker run -d -name webapp5 -e VIRTUAL_HOST="v5.example.com" mywebapp:5
    docker run -d -name webapp6 -e VIRTUAL_HOST="v6.example.com,www.example.com" mywebapp:6
    docker run -d -name webapp7 -e VIRTUAL_HOST="v7.example.com" mywebapp:7

    jwilder / nginx-proxy将使用 VIRTUAL_HOST环境变量的值来更新其配置,并将请求路由到正确的容器。

    如何使v7成为新的默认设置

    首先,删除容器 webapp7并创建一个新的容器,将 www.example.com添加到 VIRTUAL_HOST变量中:
    docker rm webapp7
    docker run -d -name webapp7 -e VIRTUAL_HOST="v7.example.com,www.example.com" mywebapp:7

    在这种状态下,反向代理会将对 www.example.com的查询负载均衡到 webapp6webapp7容器中。

    最后,删除容器 webapp6并最终重新创建它,但是 www.example.com值中没有 VIRTUAL_HOST:
    docker rm webapp6
    docker run -d -name webapp6 -e VIRTUAL_HOST="v6.example.com" mywebapp:7

    关于docker - 立即部署镜像的新版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34729051/

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