Docker Compose - adding identifier to network name
Solution 1
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
Solution 2
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.
Solution 3
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.
Mark Sabakov
Updated on May 31, 2020Comments
-
Mark Sabakov almost 4 years
I trying to create network in docker-compose.vs.debug.yml file:
networks: myNetwork: driver: bridge
But docker adding some identifier:
docker network ls ->
NETWORK ID NAME DRIVER SCOPE 0e1fec1a9a30 dockercompose1163770330_myNetwork bridge local
If there any option to name it like this:
NETWORK ID NAME DRIVER SCOPE 0e1fec1a9a30 myNetwork bridge local
I need it to connect automatically two containers on separate projects.