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