gpt4 book ai didi

docker - 使用 docker 部署应用程序时如何更新我的应用程序

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

我使用 docker 部署了一个 nodejs 应用程序,我不知道如何在我的 nodejs 应用程序更新后更新部署。

目前,每次更新 nodejs 应用程序时,我都必须删除旧的 docker 容器和图像。

我希望在我更新 nodejs 应用程序时不需要删除旧图像和容器。

最佳答案

你标记了这个“生产”。我这样做的标准方式是这样的:

  • 在没有 Docker 的情况下进行本地开发。使您的所有单元测试通过。在本地构建和运行容器并运行集成测试。
  • 构建容器的“官方”版本。使用时间戳、版本号或源代码控制标签对其进行标记;但不要用 :latest 标记它或分支名称或其他任何会随着时间而改变的东西。
  • docker push构建的图像到注册表。
  • 在生产系统上,更改您的部署配置以引用您刚刚构建的版本标记。以某种顺序,docker run带有新图像的容器(或更多)和 docker stop带有旧图像的容器。
  • 当一切都出错时,将您的部署配置更改回以前的版本并重新部署。 (...哎呀。)如果旧版本的图像不在本地系统上,则可以从注册表中获取它们。
  • 根据需要docker rm旧容器和 docker rmi旧图像。

  • 通常,其中大部分可以自动化。持续集成系统可以构建软件、运行测试并将构建的工件推送到注册表;像 Kubernetes 或 Docker Swarm 之类的集群管理器擅长保留在某个地方运行的某个容器版本的一些副本,并为您管理版本升级过程。 (特别是 Kubernetes 部署将在开始关闭旧镜像之前启动新镜像的副本;Kubernetes 服务提供负载均衡器来完成这项工作。)

    这些都不是特定于 Node.js 的。就部署系统而言,没有任何 .js任何地方的文件,只有 Docker 镜像。 (您不会将源文件与图像分开复制,或者在图像内容上绑定(bind)安装源树,并且您绝对不会尝试实时修补正在运行的容器。)在步骤 5 中不幸恢复后,您可以在非生产环境中准确运行失败的配置,看看出了什么问题。

    但是,是的,从根本上说,您需要使用旧镜像删除旧容器并使用新镜像启动一个新容器。

    关于docker - 使用 docker 部署应用程序时如何更新我的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55833754/

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