Question: 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.

Answer: 
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

```
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`.