Rashidul Islam
Rashidul Islam

Reputation: 1702

docker-compose v3 prepend folder name to network name

When I run docker-compose up -d, docker always creates container name and network name prepended with the folder name that contains docker-compose.ymlfile.

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

Answers (2)

Shubhanshu Rastogi
Shubhanshu Rastogi

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

opHasNoName
opHasNoName

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

Related Questions