在docker-compose.yml指定了多个服务。他们的是使用相同的 Dockerfile 生成镜像。它们使用相同的镜像,但每个服务都有不同的command或者端口等其他信息。
在开发或自测过程中,经常使用 docker-compose up –build 来重建镜像。docker 会根据Dockerfile 两次相同的 myimage,比较浪费时间。
原来的配置是这样的:
version: '3'
services:
abc:
image: myimage
command: abc
build:
context: .
dockerfile: Dockerfile
xyz:
image: myimage
command: xyz
build:
context: .
dockerfile: Dockerfile
实际上,我们可以通过一些办法避免这个问题,修改配置为:
version: '3'
services:
abc:
image: myimage
command: do abc
build:
context: .
dockerfile: Dockerfile
xyz:
image: myimage
command: do xyz
depends_on:
- abc
这样,如果没有 myimage 的情况下会根据 abc 中的 build 来构建镜像,然后在 abc 服务完成后,再启动 xyz 时直接使用已经存在的 myimage 了。