Docker:项目中的多个 Dockerfile

新手上路,请多包涵

当你有一个 Dockerfile 用于数据库,一个用于应用程序服务器等等时,你如何组织属于一个项目的 Dockerfiles?您是否在源代码中创建了某种层次结构?一个大型企业项目不能只包含一个 Dockerfile 吗?

原文由 LuckyLuke 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 850
2 个回答

作者注

这个答案已经过时了。 Fig 不再存在并已被 Docker compose 取代。已接受的答案无法删除。

Docker Compose 支持构建项目层次结构。所以现在很容易在每个子目录中支持一个 Dockerfile。

 ├── docker-compose.yml
├── project1
│   └── Dockerfile
└── project2
    └── Dockerfile


原始答案

我只是为每个组件创建一个包含 Dockerfile 的目录。例子:

在构建容器时,只需提供目录名称,Docker 就会选择正确的 Dockerfile。

原文由 Mark O’Connor 发布,翻译遵循 CC BY-SA 4.0 许可协议

docker 的较新版本(>=1.8.0)中,您可以执行此操作

docker build -f Dockerfile.db .
docker build -f Dockerfile.web .

一个大节省。

编辑:根据 raksja 的评论更新版本

编辑:@vsevolod 的评论:可以通过提供文件 .Dockerfile 扩展名(而不是名称)来在 VS 代码中突出显示语法,例如 Prod.Dockerfile、Test.Dockerfile 等。

原文由 Shuo 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题