2

这是征求意见和意见的请求。我对 Docker 相当陌生。

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

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

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

什么是正确的(指导方针?)做事方式,为什么?我想做干净的事情。

提前致谢。GG

4

1 回答 1

-1

我可以告诉你我是如何做到的,以及为什么它对我来说是一种更好的方式。

我没有不同的图像作为开发和生产。我有一个基本映像,建立在 alpine 上,具有最少的二进制文件和依赖项。我的 Dockerfile 中有一个简单的两阶段构建。

对于测试和生产,有一个 CI/CD 设置。在 prod 分支中合并代码的那一刻,创建了一个容器来构建相同的 Dockerfile。然后在运行所有测试用例后,将镜像推送到带有最新标签的 docker hub。这个最终映像现在可以部署了。

由于我有相同的 dockerfile 用于开发和生产,并且在发布标签之前运行测试,因此删除了任何系统依赖项或诸如“它适用于我的系统但不适用于你的系统”之类的东西。此外,两阶段构建可以帮助您创建具有优化构建时间的轻量级 docker 映像。

于 2020-04-05T15:18:00.837 回答