我有一个 docker-compose.yml,其中有多个服务使用相同的 Dockerfile(django、celery 等等)当我使用 docker-compose build 时,它会多次构建我的容器。
它使我的“应用更改并重新启动”过程成本高昂。有没有只构建一次 Dockerfile 的好方法?我可以只构建一个容器并希望它更新所有容器吗?
就我而言,我有 5 个 Dockerfile 实例,只需使用不同的命令、不同的卷……
使用--build
flag 和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
andimage
用于第一次服务,仅image
用于第二次服务。
这是生成两个 wordpress 容器的示例用法,其中一个是从上下文中指定的 dockerfile 构建的,并将生成的图像命名为 as wordpress:custom
,另一个是从图像构建的wordpress:custom
。容器名称不同,但两个服务中使用的图像相同。一个服务使用构建上下文构建镜像,其他服务使用该镜像。为安全起见,您可以删除任何以前的wordpress:custom
图像。因此 wordpress-site-2 不使用缓存图像。
编辑 1:扩展答案以显示如何使用相同的图像构建两个容器。不能使用相同的 container_name。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句