V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dzdh
V2EX  ›  Docker

使用 docker 部署应用程序在单机上怎么实现热更新

  •  
  •   dzdh · 2022-06-21 09:07:10 +08:00 · 2763 次点击
    这是一个创建于 871 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不考虑 stack / swarm / k*s 。单机场景。只能自己做蓝绿吗

    19 条回复    2022-07-18 14:13:46 +08:00
    dzdh
        1
    dzdh  
    OP
       2022-06-21 09:21:16 +08:00
    抛砖引玉看好不好使。

    compose 运行两个服务,一个是 tcp 转发服务,另一个是真正的服务,scale=N 不直接对外暴露任何端口。

    比如:

    forward: 80:80, forward: 80->nginx:80
    nginx(scale=N): :80

    然后 forward 不用动,更新 nginx 就行?
    securityCoding
        2
    securityCoding  
       2022-06-21 09:35:44 +08:00 via Android
    既然都单机了,你为啥还追求热更新。。。
    dzdh
        3
    dzdh  
    OP
       2022-06-21 09:56:31 +08:00
    @securityCoding 总想希望 0 停机时间嘛 (doge
    ttyn
        4
    ttyn  
       2022-06-21 10:07:40 +08:00
    @dzdh 不需要 tcp 转发服务,直接 Nginx 负责两个服务的端口,看情况启动其中一个就可以了吧

    另外,单节点也可以使用 Swarm ,更新、回滚也很方便
    kangkang
        5
    kangkang  
       2022-06-21 10:10:11 +08:00
    为啥只考虑 docker-compose 不考虑 k3s ?
    dzdh
        6
    dzdh  
    OP
       2022-06-21 10:15:59 +08:00
    @ttyn 本机运行个 swarm 倒也是可以。podman 有啥方案吗
    vast0906
        7
    vast0906  
       2022-06-21 10:16:17 +08:00
    emmmm ,之前做过这个奇怪的东西。暴露 host 的端口,haproxy 去监听 host 的端口,通过 haproxy 直接转发到 container 的 bridge ip 中。
    ttyn
        8
    ttyn  
       2022-06-21 10:21:34 +08:00
    @dzdh 我的理解是,podman 没有守护进程,容器生命周期由第三方管理,比如 k8s ,所以定位更适合集群,单机还是 docker 方便点
    ttyn
        9
    ttyn  
       2022-06-21 10:22:58 +08:00
    @vast0906 是不是感觉和 Traefik 工作模式很像
    ospider
        10
    ospider  
       2022-06-21 10:43:42 +08:00
    docker 妙就妙在 immutable ,你再来个热更新,不是倒退回去了……
    sadfQED2
        11
    sadfQED2  
       2022-06-21 10:50:35 +08:00 via Android
    服务前面套个 haproxy ?使用 ha 检查服务存活
    sadfQED2
        12
    sadfQED2  
       2022-06-21 10:51:25 +08:00 via Android
    @sadfQED2 如果你只有 http 服务的话那就更好办,nginx 就行了
    Chad0000
        13
    Chad0000  
       2022-06-21 11:00:04 +08:00 via iPhone
    同样建议 op 试试 k3s 。我的线上系统就部署在虚拟机里面的 k3s 上。
    vast0906
        14
    vast0906  
       2022-06-21 11:13:10 +08:00
    @ttyn 我们前面还有一层 ng ,所以我就觉得这个做的有点多此一举
    THESDZ
        15
    THESDZ  
       2022-07-18 10:53:12 +08:00
    Traefik+docker network?
    dzdh
        16
    dzdh  
    OP
       2022-07-18 12:35:31 +08:00
    @Chad0000 k3s 和 k8s 区别是啥
    Chad0000
        17
    Chad0000  
       2022-07-18 13:19:24 +08:00 via iPhone
    @dzdh k3s 移除了云商的库,替换成更轻量的实现,对系统要求更少。甚至可以在嵌入式系统运行。
    dzdh
        18
    dzdh  
    OP
       2022-07-18 13:33:46 +08:00
    @Chad0000 k3s 适合跑在大型集群上吗
    Chad0000
        19
    Chad0000  
       2022-07-18 14:13:46 +08:00 via iPhone
    @dzdh 个人认为不适合,大型集群应该使用 k8s
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1017 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:38 · PVG 03:38 · LAX 11:38 · JFK 14:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.