我的docker-compose.yml
指定了多张图片。其中两个图像使用相同的本地Dockerfile
构建。它们共享相同的图像名称,但每个图像名称都有不同的命令。
在开发过程中,我经常使用docker-compose up --build
来重建图像。麻烦的是,docker构建相同的myimage
两次 - 花费的时间超过了必要的时间。
有没有办法表达图片只需要构建一次?
version: '2'
services:
abc:
image: myimage
command: abc
build:
context: .
dockerfile: Dockerfile
xyz:
image: myimage
command: xyz
build:
context: .
dockerfile: Dockerfile
答案 0 :(得分:21)
每次the docker-compose file documentation用于构建,为第一项服务指定build:
和image:
,然后为后续服务指定image:
。
这是您的示例的修改版本,它只构建一次图像(对于abc服务)并将该图像重新用于xyz服务。
version: '2'
services:
abc:
image: myimage
command: abc
build:
context: .
dockerfile: Dockerfile
xyz:
image: myimage
command: xyz
答案 1 :(得分:2)
为了让@amath 的好答案更清晰一些
您需要添加图像名称,为第一个服务指定build:
和image:
,然后为后续服务指定image:
和depends_on: first_service
。
像这样:
version: '2'
services:
first_service:
image: myimage
command: abc
build:
context: .
dockerfile: Dockerfile
second_service:
image: myimage
command: xyz
depends_on:
- first_service
感谢@DrSensor 的评论