Reputation: 1702
When I run docker-compose up -d
, docker always creates container name and network name prepended with the folder name that contains docker-compose.yml
file.
I can specify the container name as follows:
nginx:
container_name: nginx
build:
context: .
dockerfile: .docker/docker-nginx.dockerfile
But how can I specify the network name so that it doesn't prepend folder name to it?
Thanks.
Upvotes: 12
Views: 9496
Reputation: 2413
Docker Prepends the current folder name with all the components name created using docker compose file.
Eg : If the current folder name containing the docker-compose.yml file is test, all the volumes,network and container names will get test appended to it. In order to solve the problem people earlier proposed the idea of using -p flag with docker-compose command but the solution is not the most feasible one as a project name is required just after the -p attribute. The project name then gets appended to all the components created using docker compose file.
The Solution to the above problem is using the name property as in below.
volumes:
data:
driver: local
name: mongodata
networks:
internal-network:
driver: bridge
name: frontend-network
This volume can be referred in the service section as
services:
mongo-database:
volumes:
- data:/data/db
networks:
- internal-network
The above name attribute will prevent docker-compose to prepend folder name.
Note : For the container name one could use the property container_name
services:
mongo-database:
container_name: mongo
Upvotes: 21
Reputation: 20736
You have to place a ".env" file in the root of your docker-compose project directory.
COMPOSE_PROJECT_NAME=MyFancyProject
See Docker docs for further information: https://docs.docker.com/compose/reference/envvars/
If you don't use docker-compose, you can use the "-p
" parameter to set this on docker run
.
Upvotes: 10