我有两个Docker Compose文件,docker-compose.yml
的内容如下:
version: '2'
services:
mongo:
image: mongo:3.2
restart: always
volumes:
- /mnt/data/mongodb/data/db:/data/db
redis:
image: redis:3
restart: always
application:
build: .
image: localregistry:5000/mz_application:latest
ports:
- "3000:3000"
links:
- mongo:mongo
- redis:redis
restart: always
我进行部署时使用另一个文件docker-deploy.yml
version: '2'
services:
application:
image: localregistry5000/mz_application:latest
links:
- mongo:mongo
- redis:redis
restart: always
nginx:
restart: always
build: ./nginx/
ports:
- "80:80"
volumes_from:
- application
restart: always
links:
- application:application
command: /bin/bash -c "nginx -g 'daemon off;'"
tty: false
因此使用这些文件的想法如下。当我运行时,它们可以提供所需的功能和数据。
docker-compose build
它会构建并推送镜像到我们本地的Docker注册表。
docker-compose -f docker-compose.yml -f docker-deploy.yml build &&
docker-compose -f docker-compose.yml -f docker-deploy.yml up -d
为了部署和运行从本地注册表中拉取的应用程序
,而不是重新构建它。
不幸的是,当我覆盖应用程序
时,它会重新构建,因为build
仍然存在于 docker-compose.yml
文件中。如何删除它?有没有一种方法可以使用一个docker-compose文件构建和推送图像,然后只使用docker compose文件覆盖来拉取?
docker-compose ... build
命令? - BMitchpull
命令从注册表中拉取镜像,如果在Dockerfile中列出的基础镜像已经被拉取,则build
命令不会再次拉取。 - BMitch