如何防止docker-compose多次构建相同的图像?

时间:2016-11-30 22:15:14

标签: docker docker-compose

我的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

2 个答案:

答案 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 的评论