我的码头组成配置看起来像这样:
泊坞窗,compose.yml
version: '3.5'
services:
Nginx:
ports:
- 8080:8080
泊坞窗,compose.prod.yml
version: '3.5'
services:
Nginx:
ports:
- 80:80
现在,当我运行命令时:docker-compose -f docker-compose.yml -f docker-compose.prod.yml up Nginx在主机上暴露两个端口:8000和80,因为它合并了ports属性:
version: '3.5'
services:
Nginx:
ports:
- 8080:8080
- 80:80
有没有办法覆盖它?我想只暴露端口80
最佳答案
此行为记录在https://docs.docker.com/compose/extends/#adding-and-overriding-configuration
For the multi-value options
ports
,expose
,external_links
,dns
,dns_search
,andtmpfs
,Compose concatenates both sets of values
由于端口将是所有撰写文件中端口的串联,我建议创建一个新的docker-compose.dev.yml文件,其中包含您的开发端口映射,将其从基本docker-compose.yml文件中删除.
正如Nikson所说,您可以将此docker-compose.override.yml命名为自动应用您的开发配置,而不会链接docker-compose文件.如果手动指定另一个覆盖文件,则不会应用docker-compose.override.yml(例如docker-compose -f docker-compose.yml -f docker-compose.prod.yml)