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 optionaldocker-compose.override.yml
file. By convention, thedocker-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.