我有一个docker-compose.yml,其中有多个服务使用相同的Dockerfile(django,celery等等)当我使用docker-compose build时,它会多次构建我的容器。
它使我的"应用更改并重新启动"过程昂贵。有一种很好的方法只构建一次Dockerfile吗?我只能构建一个容器并希望它能全部更新吗?
在我的情况下,我有5个Dockerfile实例只是使用不同的命令,不同的卷......
答案 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
注意:build
和image
用于第一项服务,第二项服务仅使用image
。
这是一个示例用法,它生成两个wordpress容器,其中一个是在上下文中指定的dockerfile构建的,并将生成的图像命名为wordpress:custom
,另一个是从图像wordpress:custom
构建的。容器名称不同,但两个服务中使用的图像相同。一个服务使用构建上下文和其他用途构建图像。为安全起见,您可以删除之前的wordpress:custom
图片。因此wordpress-site-2不使用缓存图像。
编辑1:扩展答案,显示如何使用相同图像构建两个容器。无法使用相同的container_name。