Docker Compose - adding identifier to network name Docker Compose - adding identifier to network name docker docker

Docker Compose - adding identifier to network name


If you have docker-compose create the network, it will determine the name itself. Normally, it looks at the name of the directory where docker-compose.yml is located, and uses that as a prefix. Based on the name you have shown, it appears that this docker-compose.yml file is in a directory named dockercompose1163770330. It combines this with the myNetwork name you specified, and creates a network named dockercompose1163770330_myNetwork.

If you want to control the exact name of the network, you have two options.

  1. Use a network created outside of docker-compose (an "external" network).
networks:  default:    external:      name: myNetwork

This implies something else has created the network already. If you don't have such a network already, creating it is easy.

docker network create myNetwork
  1. (If possible) determine how visual-studio names it paths, and change that path to something static. Whether this is possible, or how, I have no idea. But if you can control dockercompose1163770330 and make it something different that you prefer, then you can predict the network name created from it.


Per https://docs.docker.com/compose/networking/:

Networks can also be given a custom name (since version 3.5):

version: "3.5"networks:  frontend:    name: custom_frontend    driver: custom-driver-1

So you could choose to simply name your network myNetwork like this:

networks:  myNetwork:    name: myNetwork    driver: bridge

Alternatively, if you want your container to join an existing network (I know you say you want docker-compose to create the network for you, but for people reading this question this might be helpful), https://docs.docker.com/compose/networking/ states:

If you want your containers to join a pre-existing network, use the external option:

networks:  default:    external:      name: my-pre-existing-network


I assume you use a VS2017 dcproj. I solved this by creating the network manually in the dcproj project as a PreBuildEvent. Add a prebuild target to the .dcproj file:

<Target Name="PreBuild" BeforeTargets="PreBuildEvent">    <Exec Command="echo Creating external docker network" />    <Exec Command="docker network create customnetwork"  IgnoreExitCode="true" /></Target>

Then in your docker-compose files you can specify an external network:

networks:  default:    external:      name: customnetwork

Requires you to start the dcproj before other projects or add the same prebuild exec to all the projects that should share the network.