docker-compose build构建每个Dockerfile尽可能多的时间

时间:2017-06-23 15:20:18

标签: docker-compose

我有一个docker-compose.yml,其中有多个服务使用相同的Dockerfile(django,celery等等)当我使用docker-compose build时,它会多次构建我的容器。

它使我的"应用更改并重新启动"过程昂贵。有一种很好的方法只构建一次Dockerfile吗?我只能构建一个容器并希望它能全部更新吗?

在我的情况下,我有5个Dockerfile实例只是使用不同的命令,不同的卷......

1 个答案:

答案 0 :(得分:1)

使用--build标记和docker-compose up使得docker可以构建所有容器。如果您只想构建一次,那么您可以命名在一个服务和其他服务中构建的映像,而不是使用dockerfile,您可以使用新构建的映像。

version: '3'
services:

  wordpress-site-1:
    image: wordpress:custom
    build:
      context: ./wordpress
      dockerfile: wordpress.dockerfile
    container_name: wordpress-site-1
    links:
      - mysql-database
    depends_on:
      - mysql-database
    ports:
      - 8080:80

  wordpress-site-2:
    image: wordpress:custom
    container_name: wordpress-site-2
    links:
      - mysql-database
    depends_on:
      - mysql-database
      - wordpress-site-1
    ports:
      - 8888:80

注意:buildimage用于第一项服务,第二项服务仅使用image

这是一个示例用法,它生成两个wordpress容器,其中一个是在上下文中指定的dockerfile构建的,并将生成的图像命名为wordpress:custom,另一个是从图像wordpress:custom构建的。容器名称不同,但两个服务中使用的图像相同。一个服务使用构建上下文和其他用途构建图像。为安全起见,您可以删除之前的wordpress:custom图片。因此wordpress-site-2不使用缓存图像。

编辑1:扩展答案,显示如何使用相同图像构建两个容器。无法使用相同的container_name。