拥有如下所示的基础docker-compose.yml
:
version: '2'
services:
web:
build: .
...
如何扩展它以使用图像?
docker-compose.prod.yml
version: '2'
services:
web:
image: username/repo:tag
使用泊坞窗docker-compose -f docker-compose.yml -f docker-compose.prod.yml up
运行它仍会提示:
建立网站
第1步/第x步:从......
我尝试了docker-compose -f docker-compose.yml -f docker-compose.prod.yml up --no-build
:
错误:需要构建服务'web',但是--no-build已通过。
我期待“从名称/回购消息中拉出来”。我有哪些选择?或者我是否需要创建一个完整的重复文件来处理这种轻微的修改?
答案 0 :(得分:5)
忽略基础build
上的docker-compose.yml
,并将其放在docker-compose.override.yml
文件中。
当你运行docker-compose时,它会自动读取覆盖。
摘自Docker Compose Documentation。
由于 docker-compose.yml
文件必须包含构建或图片,因此我们会使用优先级较低的图片,从而导致:
version: '2'
services:
web:
image: repo
[...]
现在让我们转到 docker-compose.override.yml
,即默认运行的那个(意为docker-compose up
或docker-compose run web command
)。
默认情况下,我们希望它从Dockerfile
构建图片,因此我们只需使用build: .
version: '2'
services:
web:
build: .
使用docker-compose.prod.yml
运行的生成 docker-compose -f docker-compose.yml -f docker-compose.prod.yml up
将与此类似,除了在这种情况下我们希望它从Docker存储库中获取图像:
version: '2'
services:
web:
image: repo
由于我们的基本image: repo
文件已经有docker-compose.yml
,因此我们可以在此处省略它(但这完全是可选的)。