我尝试在docker-compose.vs.debug.yml文件中创建网络:
networks:
myNetwork:
driver: bridge
但是docker添加了一些标识符:
docker network ls ->
NETWORK ID NAME DRIVER SCOPE
0e1fec1a9a30 dockercompose1163770330_myNetwork bridge local
如果有任何选项可以这样命名它:
NETWORK ID NAME DRIVER SCOPE
0e1fec1a9a30 myNetwork bridge local
我需要它自动连接两个独立的项目容器。
4条答案
按热度按时间ezykj2lf1#
根据https://docs.docker.com/compose/networking/:
网络也可以自定义名称(自3.5版起):
因此,您可以选择简单地将网络命名为
myNetwork
,如下所示:或者,如果你想让你的容器加入一个现有的网络(我知道你说你想让
docker-compose
为你创建网络,但对于阅读这个问题的人来说,这可能会有帮助),https://docs.docker.com/compose/networking/声明:如果您希望容器加入一个预先存在的网络,请使用
external
选项:km0tfn4u2#
如果你让docker-compose创建网络,它将自己决定名称。通常,它会查看docker-compose.yml所在目录的名称,并将其用作前缀。根据您显示的名称,这个docker-compose.yml文件似乎位于名为
dockercompose1163770330
的目录中。它将此名称与您指定的myNetwork
名称组合,并创建一个名为dockercompose1163770330_myNetwork
的网络。如果要控制网络的确切名称,有两种选择。
1.使用在docker-compose外部创建的网络(“外部”网络)。
这意味着其他东西已经创建了网络。如果您还没有这样的网络,创建它很容易。
1.(如果可能)确定visual-studio如何命名路径,并将该路径更改为静态路径。这是否可能,或者如何,我不知道。但是如果您可以控制
dockercompose1163770330
并使其与您喜欢的不同,那么您可以预测从它创建的网络名称。g0czyy6m3#
我假设你使用VS 2017 dcproj。我通过在dcproj项目中手动创建网络作为PreBuildEvent来解决这个问题。将预构建目标添加到.dcproj文件:
然后在你的docker-compose文件中,你可以指定一个外部网络:
要求您在其他项目之前启动dcproj,或者将相同的prebuild exec添加到应共享网络的所有项目。
pxyaymoc4#
关于Docker Docs-
您的应用程序的网络将根据“项目名称”命名,该名称基于其所在目录的名称。您可以使用--project-name标志或COMPOSE_PROJECT_NAME环境变量覆盖项目名称。”
网络名称问题的一个更简单的解决方案是创建一个.env文件,其中包含以下条目
这将以相同的名称命名默认网络。