Docker多阶段构建:订单

时间:2020-04-01 22:07:05

标签: docker docker-multi-stage-build

这是征求评论和意见的请求。我是Docker的新手。

我想要一个用于Python项目的生产和开发容器(也许也要进行单元测试)。我的搜索指向多阶段Dockerfile(以及运行它们的多个docker-compose)。

我在该主题上发现的所有文章,评论和示例均以开发图像开头,并将其用作生产构建的FROM(有些在两者之间添加测试图像)。 这对我来说毫无意义。它涉及测试文件清理,删除开发/测试工具和软件包,从而跟踪安装每个软件包的原因。容易出错。

我们不应该首先从最小的“生产”设置开始吗?然后为开发映像添加必要的调试工具和开发配置?

什么是正确的(准则?)做事方式,为什么?我想把事情弄干净。

先谢谢了。 GG

1 个答案:

答案 0 :(得分:0)

我可以告诉你我的做法以及为什么它对我来说是更好的方式。

我在开发和生产方面没有不同的印象。我有一个基本映像,该映像基于alpine构建,具有最低限度的二进制文件和依赖项。我在Dockerfile中有一个简单的两阶段构建。

要进行测试然后进行生产,需要配置CI / CD。当代码在prod分支中合并后,将使一个容器构建相同的Dockerfile。然后在运行所有测试用例后,将映像使用最新标签推送到docker hub。最后的映像现在可以部署了。

由于我使用相同的dockerfile进行开发和生产,并且在创建要发布的标签之前运行测试,因此将删除任何系统依赖项或诸如“它在我的系统上有效,但对您的系统不起作用”之类的内容。此外,分两阶段构建有助于您以优化的构建时间来创建轻量级的docker映像。