Evg*_*pov 5 docker docker-compose
我有两个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
Run Code Online (Sandbox Code Playgroud)
部署时使用的另一个文件 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
Run Code Online (Sandbox Code Playgroud)
因此,使用这些文件的想法如下。当我跑步
docker-compose build
Run Code Online (Sandbox Code Playgroud)
它会生成图像并将其推送到我们的本地Docker注册表。
docker-compose -f docker-compose.yml -f docker-deploy.yml build &&
docker-compose -f docker-compose.yml -f docker-deploy.yml up -d
Run Code Online (Sandbox Code Playgroud)
部署和运行是application从本地注册表中提取的,而不是被重建。
不幸的是,它重建了它,因为当我覆盖时application,build它仍然存在,因为它取自docker-compose.yml文件。如何删除它?有没有一种方法-使用一个docker-compose文件构建并推送和映像,然后仅使用docker compose文件覆盖进行拉取?
首先,如果你允许的话,我发现有几件事需要考虑。我不知道你为什么想要拥有相同的两个构建目标图像,但无论如何,我会尝试更好地回答解决方案,而不是问你为什么要这样做。
此外,请注意,在 docker-deploy.yml 文件中,对于应用程序服务,您没有定义构建部分,因此将使用默认值和路径
docker-compose -f docker-deploy.yml build构建映像:Dockerfile.
services:
application:
build: .
image: localregistry:5000/mz_application:latest
ports:
- "3000:3000"
links:
- mongo:mongo
- redis:redis
restart: always
container_name: app_compose
Run Code Online (Sandbox Code Playgroud)
services:
application:
image: localregistry:5000/mz_application:latest
links:
- mongo:mongo
- redis:redis
restart: always
container_name: app_deploy
Run Code Online (Sandbox Code Playgroud)
build: .它是相同的,但不放置任何内容。当您使用docker-compose build命令时,它会忽略ports:部分。当您使用docker-compose up命令时,它会忽略build:部分。当然,如果您想在不重建避免镜像重写的情况下启动具体服务,您还可以这样做:
docker-compose -f docker-compose.yml build
docker-compose -f docker-deploy.yml run -d nginx /bin/bash -c "nginx -g 'daemon off;'"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4446 次 |
| 最近记录: |