Build docker image that depends on a local “Dockerfile”
我有以下文件夹结构:
1 2 3 4 5 6
| my_package
|- docker_compose.yml
|- a
|- Dockerfile
|- b
|- Dockerfile |
这里,我的docker-compose.yml是:
1 2 3 4 5 6 7 8 9 10
| version: '2'
services:
a:
build:
context: a
dockerfile: Dockerfile
b:
build:
context: b
dockerfile: Dockerfile |
当我运行docker-compose build时,我希望有两个输出图像,一个用于a和一个用于b。
这是a/Dockerfile。
1 2
| FROM ubuntu
RUN touch AAA |
这是b/Dockerfile。
1 2
| FROM # NOT SURE WHAT TO PUT HERE
RUN touch BBB |
我希望b图像在rootdir中包含两个文件:AAA和BBB,这需要一个dockerfile依赖于另一个dockerfile。
这有可能吗?在一个docker-compose build命令中,是否有任何方法可以生成两个docker映像(它们之间有依赖关系)?
我一直坚持使用Docker version 1.12.6, build 78d1802(它只与版本2语法兼容)。
您可以在docker-compose.yml中使用depends_on,我知道它在docker-compose yaml版本3中可用,以表示服务B依赖于A,docker-compose将遵循您表示的依赖链并首先构建A。请参阅此处的"依赖"解释。
由于b来自a,因为b的dockerfile表示文件aa和bbb在服务b中都可用,只要文件aa和文件bbb的权限相同,在这种情况下,在执行touch命令时,在服务a和服务b中都以根用户身份运行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| version: '3'
services:
a:
build:
context: a
image: a
dockerfile: Dockerfile
b:
build:
context: b
image: b
dockerfile: Dockerfile
depends_on:
- a |
编辑(通过OP):
您也可以在v2中使用depends_on,但使用数组。
一定要在docker-compose.yml中添加image来指定生成的图像,这样b就可以生成FROM a。
- 谢谢。不幸的是,我无法安装更新的Docker引擎。我困在1.12.6,因此v2docker compose。另外,我不知道如何在b的dockerfile中添加依赖项。
- @绝地武士,依我所知,第二版可能会有。另外,一个版本经常被卡住,这是更大的体系结构系统设计问题的标志,需要加以解决。
- 没有争论(关于更深层的问题)。这是别人借来的环境。无论如何,depends_on确实存在于v2中,有一些语法差异(需要一个数组);但是,我不确定如何使一个dockerfile依赖于另一个dockerfile(b/Dockerfile中的from需要是什么)
- @绝地武士B/dockerfile中的"从"将是一个服务的形象名称。您可以在docker-compose.yml中为A和B服务设置映像名。