我应该在部署时将代码添加到Docker镜像中么?

如果您提出这个问题,您可能已经开始在本地开发环境使用Docker。如果您已经完成了适当的工作,那么只需一个docker- up就可以保持当前任务,并且你修改代码后立马可以在运行的服务器上看到效果。太爽了!

这里有一个重要的设置就是须要将你的项目代码从宿主机安装到docker容器中。这样的话你就可以选择你的IDE对其进行编辑并且不须要在每次代码有变化时就重新构建镜像。

现在你准备好将迁移到除本地开发之外的其他环境。生产环境怎么样?使用相同的方法有什么问题么?您已经知道有人在部署时将代码直接放入镜像中。你也必须这样做吗?你是不是错过了什么重要的东西?

两种选择:

要在生产环境中运行代码,你可以都使用这两种选择。和在本地使用类似的工作流程。但是制作完整镜像有一些优势,只有在部署工作流程正确的情况下才能挂载你的代码。 更多信息详见下文。

两个正确的工作流程如下:
1.当提交时为Docker 镜像创建一个tag
2.从服务器上拉取这个镜像
3.将这个新镜像运行为容器
4.可选(如果可能的话回滚到之前的镜像版本)

1.对git代码进行添加一个tag标签并标记成release版本
2.从你的服务器check out出这个提交版本
3.从deploy-friendly通用镜像启动容易并挂载你的代码
4.可选(如果需要,回滚到之前的check out出来的版本)

构建Artifacts

这两个工作流程都有一个共同的重要细节。通过创建镜像tag或使用版本标记版本,您将创建 build artifacts。

这种做法符合12因素指南。它指定了将代码库到部署的三个阶段。在构建阶段,您可以精确确定代码的版本,然后向他添加配置信息,最后运行它。

标记的git仓库或者被标记的镜像就是你部署的artifact。它可用于在不同的环境(如测试或生产)中运行,他们只是环境变量有所不同。

如上所述,您可以通过创建带标记的Docker映像来隐式地实现这一点,但不必这样做。你也可以只使用Docker然后在运行时隔离。 如果您使用Git标签之类的东西来确定您的版本,则不一定需要将代码挂载到Docker镜像中。

启动速度

尽管如此,构建带有代码的镜像还是有好处的。这种构建的镜像容器应该能够非常快速地启动,因为它已经完全打包了。在有些情况下,让容器启动并直接处于工作状态是很好的。如果你必须首先安装依赖项,情况就不是这样了,例如使用python pip ,如果你要挂载代码并使用Python,你就必须先安装python依赖。

安装卷(Mounting volumes)可能会比较慢。此外,您正在执行可能会有失败的操作——例如,如果依赖项源暂时不可用。这会导致更多的失败点,而不仅仅是Docker镜像注册。如果在启动时安装的依赖项的源关闭,您将无法启动新的容器。

还有一个优点:您以前在运行时才能发现的bug,它可以在构建过程中会被发现。为此,您应该采用自动化的测试方法,因此您的新版本首先在某种临时环境中运行 - 在生产环境运行之前发现错误。

总结:

如果您是通过标记提交(tagging commits)方式来发布版本,那么您已经以这种方式创建了构建工件(build artifacts)。如果你只是在容器启动时挂载你的代码或二进制文件,那么你的Docker容器只有一个工作 - 提供隔离。 这没有构建新的镜像。你应该在任何是都能够回滚。但是,请记住,他的缺点:启动时启动时间较慢,故障点较多。

原文:https://vsupalov.com/docker-mount-or-add-code-for-production-deploy/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • 汝居山环水绕 吾观星动旗摇
    R米粒阅读 180评论 0 0
  • 文/Meetingtian 这是七年以后我第一次见她,除了略显丰腴以外,她依然眉清目秀,美丽的不像话。上一次见她,...
    MeetingTian阅读 317评论 19 4
  • 上一篇博客Chubby的锁服务中已经对Chubby的设计和实现做了比较详细的实现,但由于其闭源身份,工程中接触比较...
    CatKang阅读 2,534评论 0 4