Home > Back-end >  docker-compose override not taking additional yml into account?
docker-compose override not taking additional yml into account?

Time:07-21

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 does not show the port. Why? I'm trying to display the effective compose file, means: the merge result that is also used by docker-compose up.

docker-compose version 1.25.0

CodePudding user response:

According to the documentation, docker-compose will only automatically find files named docker-compose.yml and docker-compose.override.yml:

By default, Compose reads two files, a docker-compose.yml and an optional docker-compose.override.yml file. By convention, the docker-compose.yml contains your base configuration. The override file, as its name implies, can contain configuration overrides for existing services or entirely new services.

If you want to use additional compose files, you need to specify them explicitly using -f <filename>:

docker-compose up -f docker-compose.yml -f docker-compose.test.yml

CodePudding user response:

By default, docker-compose finds the docker-compose.yml file. The problem you are facing is happening because the port is configured in the other file and DockerCompose doesn't know anything about it. If you want to check the configuration of the other file, you need to pass it as a parameter:

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

Or you can put the port configuration on the first file like this:

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

And it should work just fine.

  • Related