Docker Tip #87: Run Multiple Docker Compose Files with the -f Flag
We'll go over running a few docker-compose.yml files at once, even with custom file names. We'll also use the COMPOSE_FILE env variable.
In Docker tip #10 we covered how to organize multiple independent services using 1
docker-compose.yml file but this time around we’ll go over how to run multiple
docker-compose.yml files at once with a single
This could come in handy if you have a mono repo or a split repo with a bunch of services that can be run independently. This video demonstrates using this pattern, or you can read below for the TL;DR version.
Let’s say you have 3 docker-compose.yml files in a single project and you decide to name them
c.yml. Each of them may have a component of your application.
You can run them all at once by running
docker-compose -f a.yml -f b.yml -f c.yml up.
-f flag lets you run a file with a custom name and you can chain together multiple
-f flags. You can always run the
config command to see what the final result will be. In this case Docker Compose will combine them all together as 1 unit.
If you find yourself using this pattern a lot you can define a
COMPOSE_FILE environment variable in an
.env file and set it to be
COMPOSE_FILE=a.yml:b.yml:c.yml. Now you don’t need to pass multiple
-f flags on the command line – you can run a typical
The above will work on native Linux, WSL and macOS. If you’re using Windows with PowerShell you’ll want to separate each file with
; instead of
:. You can also customize this path separator by setting
COMPOSE_PATH_SEPARATOR in your