node.js - 部署 Web 应用程序时是否应该重新创建容器?

标签 node.js git deployment docker

我试图弄清楚最佳实践是否表明,在部署新版本的网络应用程序(nodejs 在其自己的容器中运行)时,我应该:

  • 从容器内部执行git pull并“就地”更新;或
  • 使用新代码创建一个新容器,并对两个 docker 容器执行热交换

我可能会遗漏一些技术细节,因为我对容器的概念还很陌生。

最佳答案

第二种方法是最佳实践:您将制作镜像的第二个版本(使用新代码),停止容器,然后基于第二个版本运行第二个容器。

这个想法是,您可以轻松回滚,因为镜像的第一个版本可用于随时运行最初在生产环境中的容器。

尝试修改正在运行的容器并不是一个好主意,因为一旦它被停止并删除,再次运行它就会从原始镜像及其原始状态开始。除非您将该容器提交到新镜像,否则这些更改将会丢失。即使您确实提交了,您也无法轻松重建该镜像。 (另外,您将提交所有容器:它的新代码,还有服务器执行期间创建的一堆附加文件:日志和其他文件:不是很干净)

容器应该从您可以从 specifications of a Dockerfile 精确构建的镜像运行。 。它不应该在运行时修改。

但有几点需要注意:

  • 如果您的容器 is used (--link) by other containers ,您需要先停止这些容器,停止容器并从新版本的镜像运行新容器,然后重新启动其他容器。
  • 不要忘记重新安装任何 data containers 您用来获取持久数据的。

关于node.js - 部署 Web 应用程序时是否应该重新创建容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33158229/

相关文章:

node.js - 有没有办法指定哪个 ssh key 应该用于 npm install

git - 克隆 git 存储库的偷偷摸摸的方法?

linux - 在 perl 中的 SSH 中执行第二次 SSH

azure - 管理 Azure 应用服务中的 Docker 镜像以进行登台和生产

javascript - 在nestjs的服务中抛出HttpException

javascript - 剥离特殊字符

javascript - Node.js - 如何获取相对需求路径?

git - 如何根据作者的时间戳对 git log 进行排序?

asp.net - 使用 SQL 数据库部署 ASP.NET Core Web API

node.js - 在 openshift 上运行 node.js sails 应用程序