多个容器的自动构建

时间:2015-10-28 11:12:59

标签: github docker

我有一些预计会一起运行的容器。我是否需要为每个创建一个小的github存储库(看起来很浪费和不方便),或者我可以使用相同的github存储库作为自动构建多个容器的源吗?

3 个答案:

答案 0 :(得分:3)

如果希望容器一起运行,则使用docker compose构建并运行它们。然后,可以将与每个容器关联的Docker文件保存在子目录中。

实施例

├── docker-compose.yml
├── one
│   └── Dockerfile
└── two
    └── Dockerfile

搬运工-compose.yml

web1:
  build: one
  ports:
    - 8080
web2:
  build: two
  ports:
    - 8080

答案 1 :(得分:1)

根据我的评论,我需要设置“多个容器的自动构建”。与原始海报不同,我的用例涉及不需要一起使用的容器,而是意味着彼此独立使用。

我解决的解决方案是为项目中的每个容器设置子目录,然后在Dockerhub上设置自动构建,以使用不同的标记跟踪每个子目录的Dockerfile。所以,我的git repo(托管在GitHub上)包含这样的内容:

$ tree containers/
containers/
|-- Makefile
|-- R-3.2.3
|   |-- Dockerfile
|   `-- install.R
|-- README.md
|-- base
|   `-- Dockerfile
|-- bedtools-2.26.0
|   `-- Dockerfile
|-- bwa-0.7.17
|   `-- Dockerfile

我的Dockerhub帐户跟踪整个仓库并构建容器,例如

username/project:R-3.2.3
username/project:bedtools-2.26.0
username/project:bwa-0.7.17

注意事项:

  • 在仓库的master分支上跟踪所有容器,因此对该分支的任何更改都会触发所有容器的重建

  • 容器是以随机顺序构建的,所以如果你有一个容器层次结构(例如带有中间层的自定义基础层),那么很有可能变化不会成功地传播到整个图像链中并且需要从Dockerhub网站触发手动重建。

另外值得注意的是,Dockerhub的构建速度极慢,因此如果您需要快速推出更改,这可能不是一种可行的方法。

答案 2 :(得分:0)

您可以使用相同的repo和不同的分支,以隔离每个容器的提交历史记录。

每个都可以由Dockerfile组成,也可能是Dockerfile需要复制或添加到构建映像的其他资源。

从Git 2.5开始,您可以克隆该repo并在不同的文件夹中签出其分支。请参阅“Multiple working directories with Git?”。