Can we override our project and network name inside docker-compose.yml, i.e. without using flag or environment variable?
2 Answers
you can create an .env file with key=value options such as
COMPOSE_PROJECT_NAME={project name}
you should note that this will only work when the .env file is in the current path
- 141
-
I have multiple compose overrides for prod/staging/dev - is there a way to define a .env for each? – rnoodle Jul 09 '20 at 22:39
-
1
-
1It can get clunky with folders. For example if you use different versions of your app. You use same repo, so it has same name, but container name should be different. – Andrius Feb 06 '22 at 13:00
This can be done in with a parameter of the docker-compose call:
$> docker-compose -p THISISMYPROJECT_AND_NWK_NAME up -d
Unfortunately there is no way to persist it at the moment. (see: https://github.com/docker/compose/issues/745)
That's why I personally prefer adding a bash alias for my projects in ~/.bash_aliases (Debian based Linux) for example:
# project PROJECT shortcuts
alias dc_PROJECT_up='docker-compose -p PROJECT up -d'
alias dc_PROJECT_down='docker-compose -p PROJECT down'
# general docker compose shortcuts
alias dc='docker-compose '
alias dc_up='docker-compose up -d'
alias dc_down='docker-compose down'
So I can call dc_PROJECT_up to start my project with a project name PROJECT. The network name is PROJECT_default then.
Additionally you can setup additional networks with custom names in the docker-composer.yml like this (v. 2.1):
version: '2.1'
...
networks:
mynwk:
driver: bridge
name: mynwk
...
You can check this with the following command:
$> docker network ls
You should get a list of networks including yours and the default one.
- 264
-
1It seems the name parameter does not work anymore with docker compose version 3 – Alexis.Rolland Aug 19 '18 at 05:43
directory nameand can be override byCOMPOSE_PROJECT_NAME, the first option is too rigid as directory name might change, the other affects all projects – ntviet18 Nov 19 '17 at 12:47