我有以下文件夹结构:
my_package
|- docker_compose.yml
|- a
|- Dockerfile
|- b
|- Dockerfile
在这里,我的docker-compose.yml
是:
version: '2'
services:
a:
build:
context: a
dockerfile: Dockerfile
b:
build:
context: b
dockerfile: Dockerfile
当我运行docker-compose build
时,我预计会有两个输出图像,一个用于a
,另一个用于b
。
这是a/Dockerfile
FROM ubuntu
RUN touch AAA
这是b/Dockerfile
FROM <a> # NOT SURE WHAT TO PUT HERE
RUN touch BBB
我希望b
图像包含rootdir中的两个文件AAA
和BBB
,这需要一个Dockerfile依赖另一个。
这可能吗?是否有任何解决方法可以在一个docker-compose build
命令中构建两个Docker镜像(它们之间具有依赖关系)?
我坚持使用Docker version 1.12.6, build 78d1802
(仅与版本2语法兼容)。
答案 0 :(得分:3)
您可以在docker-compose.yml中使用depends_on
,我知道它在docker-compose YAML版本3中可用,表示服务B依赖于A而docker-compose将遵循依赖关系链表达和建立第一。请参阅depends_on here的说明。
由于B是FROM A,因为B的Dockerfile表示两个文件AAA和BBB将在服务B中可用,只要文件AAA和文件BBB的权限相同,在这种情况下,您将以root身份运行执行touch命令时,服务A和服务B都可以。
version: '3'
services:
a:
build:
context: a
image: a
dockerfile: Dockerfile
b:
build:
context: b
image: b
dockerfile: Dockerfile
depends_on:
- a
编辑(通过OP):
depends_on
,但使用数组。image
以指定生成的图片,以便生成b
FROM a