【发布时间】:2015-10-16 04:52:03
【问题描述】:
我试图弄清楚最佳实践是否会规定在部署我的网络应用程序的新版本(在自己的容器中运行的 nodejs)时,我应该:
- 从容器内部执行
git pull并“就地”更新;或 - 使用新代码创建一个新容器并执行两个 docker 容器的热交换
我可能会遗漏一些技术细节,因为我对容器的概念非常陌生。
【问题讨论】:
标签: node.js git deployment docker
我试图弄清楚最佳实践是否会规定在部署我的网络应用程序的新版本(在自己的容器中运行的 nodejs)时,我应该:
git pull 并“就地”更新;或我可能会遗漏一些技术细节,因为我对容器的概念非常陌生。
【问题讨论】:
标签: node.js git deployment docker
第二种方法是最佳实践:您将制作映像的第二个版本(使用新代码),停止容器,然后基于该第二个版本运行第二个容器。
这个想法是您可以轻松回滚,因为您的映像的第一个版本可随时用于运行最初投入生产的容器。
尝试修改正在运行的容器并不是一个好主意,因为一旦它被停止并删除,再次运行它就会从原始图像中恢复,并保持其原始状态。除非您将该容器提交到新映像,否则这些更改将丢失。即使您确实提交了,您也无法轻松地重建该映像。 (另外你会提交所有容器:它的新代码,还有一堆在服务器执行期间创建的附加文件:日志和其他文件:不是很干净)
容器应该从您可以从specifications of a Dockerfile 精确构建的映像运行。它不应该在运行时被修改。
但有几点需要注意:
--link) by other containers,您需要先停止这些容器,停止容器并从新版本的映像运行新容器,然后重新启动其他容器。【讨论】: