当您有一个用于数据库的Dockerfile、一个用于应用程序服务器的Dockerfile等时,如何组织属于项目的Dockerfile ?您是否在源代码中创建了某种层次结构? 一个大的企业项目不能只包含一个Dockerfile?
当前回答
添加一个抽象层,例如,在这个项目https://github.com/larytet/dockerfile-generator中添加一个YAML文件,看起来像
centos7:
base: centos:centos7
packager: rpm
install:
- $build_essential_centos
- rpm-build
run:
- $get_release
env:
- $environment_vars
一个简短的Python脚本/make可以从配置文件生成所有dockerfile。
其他回答
在较新版本(>=1.8.0)的docker中,您可以这样做
docker build -f Dockerfile.db .
docker build -f Dockerfile.web .
大省。
编辑:更新版本每raksja的评论
编辑:来自@vsevolod的评论:可以通过给文件. dockerfile扩展名(而不是名称)来在VS代码中获得语法高亮显示,例如Prod.Dockerfile, Test。Dockerfile等等。
添加一个抽象层,例如,在这个项目https://github.com/larytet/dockerfile-generator中添加一个YAML文件,看起来像
centos7:
base: centos:centos7
packager: rpm
install:
- $build_essential_centos
- rpm-build
run:
- $get_release
env:
- $environment_vars
一个简短的Python脚本/make可以从配置文件生成所有dockerfile。
当处理一个需要使用多个dockerfile的项目时,只需在一个单独的目录中创建每个dockerfile。例如,
。.app/ 。.db/
上面的每个目录都包含它们的dockerfile。当应用程序正在构建时,docker将搜索所有目录并构建所有dockerfile。
在Intellij中,我简单地将docker文件的名称更改为*。Dockerfile,并关联文件类型*。Dockerfile到docker的语法。
作者的注意
这个答案已经过时了。图不再存在,已被Docker合成所取代。 接受的答案不能被删除。
Docker Compose支持项目层次结构的构建。所以现在很容易在每个子目录中支持Dockerfile。
├── docker-compose.yml
├── project1
│ └── Dockerfile
└── project2
└── Dockerfile
原来的答案
我只是为每个组件创建了一个包含Dockerfile的目录。例子:
设置docker / fig Mesos环境
当构建容器时,只要给出目录名,Docker就会选择正确的Dockerfile。
推荐文章
- 试图连接到https://index.docker.io时,网络超时
- 为每个Docker图像查找图层和图层大小
- 如何避免在为Python项目构建Docker映像时重新安装包?
- 如何用docker-compose更新现有图像?
- 如何在构建docker期间设置环境变量
- 拉访问拒绝存储库不存在或可能需要docker登录
- 如何在ENTRYPOINT数组中使用Docker环境变量?
- Docker:容器不断地重新启动
- Mac/OS X上的/var/lib/docker在哪里
- 如何用docker-compose标记docker图像
- 从环境文件中读入环境变量
- 禁用特定RUN命令的缓存
- 从Docker容器获取环境变量
- E: gnupg, gnupg2和gnupg1似乎没有安装,但是这个操作需要其中一个
- 如何从docker更改默认docker注册表。IO到我的私人注册表?