docker-compose 覆盖不考虑额外的 yml?

问题描述 投票:0回答:2

docker-compose.yml:

version: '3.7'
services:
  db:
    image: mysql:8.0

docker-compose.test.yml:

version: '3.7'
services:
  db:
    ports:
      - 3306:3306

docker-compose config
显示端口。为什么? 我正在尝试显示有效的撰写文件,意思是:
docker-compose up
也使用的合并结果。

docker-compose 版本 1.25.0

docker docker-compose
2个回答
8
投票

根据文档,docker-compose只会自动查找名为

docker-compose.yml
docker-compose.override.yml
的文件:

默认情况下,Compose 读取两个文件,一个

docker-compose.yml
和一个可选的
docker-compose.override.yml
文件。按照惯例,
docker-compose.yml
包含您的基本配置。顾名思义,覆盖文件可以包含现有服务或全新服务的配置覆盖。

如果您想使用其他撰写文件,则需要使用

-f <filename>
:

显式指定它们
docker-compose up -f docker-compose.yml -f docker-compose.test.yml

-2
投票

默认情况下,docker-compose 会查找 docker-compose.yml 文件。您所面临的问题正在发生,因为端口是在其他文件中配置的,而 DockerCompose 对此一无所知。如果你想检查其他文件的配置,需要将其作为参数传递:

docker-compose -f ./path/to/docker-compose.test.yml config

或者您可以将端口配置放在第一个文件中,如下所示:

version: '3.7'
  services:
    db:
      image: mysql:8.0
      ports:
        - 3306:3306

它应该工作得很好。

© www.soinside.com 2019 - 2024. All rights reserved.