我想知道人们如何将 docker 用于生产和开发。在开发中,我想挂载我的源/构建文件,以便能够快速轻松地进行更改。对于生产,我想在图像中包含源/构建文件。
这通常是如何完成的,是否有最佳或更常见的做法?
在我看来,理想情况下,我会有一个 Dockerfile 使用标志或环境变量之类的东西来设置 prod 或 dev 映像,但我找不到任何这样做的人的例子,我不确定它到底是如何完成的.
我还看到了一些具有用于生产和开发的独特 Dockerfiles 的项目的粗略示例,但是存在维护单独 Dockerfiles 的问题,如果我们不小心,随着时间的推移可能会出现分歧。
这些都是明智的还是我可能误解了什么?我对 docker 比较陌生。使用类似设置的示例 Dockerfile 或项目会很棒。我担心在一开始就用不好的做法对我们的一些服务进行 dockerizing。
编辑:如果影响任何响应,我当前所有的应用程序都是基于 python 的。
一个好的方法是使用 Docker 的多阶段构建,因为它们允许您在包含开发依赖项的映像中构建工件,并且仅在最终映像中使用工件和运行时依赖项。
我通常建议不要为不同的环境使用不同的 Dockerfile,这通常应该使用配置参数来实现(环境变量是一个很好的解决方案)。
拥有更快的开发反馈周期在很大程度上取决于 IMO 所使用的语言。许多人将使用 IDE 以更经典的方式进行开发,并且仅构建用于集成测试等的映像(例如,根据我的经验,Java 开发人员通常就是这种情况)。其他解释型语言可能确实从将您的源代码安装到开发环境映像中获益。在这种情况下,您可以将此映像合并到您的多阶段构建中。
除了 Kevin Wittek 的出色回答之外,事实证明这可能不是问题。
我可以使用COPY将文件复制到映像,但我可以简单地安装在它们之上进行开发。
如果还有其他东西需要安装,例如仅开发的依赖项,我可以使用ARG类似的方式指定环境ARG APP_ENV=prod并覆盖它--build-arg=dev,反之亦然。
| 归档时间: |
|
| 查看次数: |
4168 次 |
| 最近记录: |