Docker Compose - adding identifier to network name

后端 未结 3 2197
猫巷女王i
猫巷女王i 2021-02-07 09:53

I trying to create network in docker-compose.vs.debug.yml file:

networks:
  myNetwork:
    driver: bridge

But docker adding some identifier:

相关标签:
3条回答
  • 2021-02-07 10:12

    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
    
    0 讨论(0)
  • 2021-02-07 10:27

    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.

    0 讨论(0)
  • 2021-02-07 10:30

    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.
    0 讨论(0)
提交回复
热议问题