是否可以从环境中读取docker-compose中的网络名称?

时间:2020-05-17 06:57:44

标签: docker networking docker-compose

由于网络名称是开放源代码项目,因此我尝试不对其网络名称进行硬编码(并且我在同一服务器上运行了多个实例,以用于不同的应用程序。)

在定义网络时是否可以使用环境变量?

这不起作用:

networks:
  ${DOCKER_NETWORK_NAME}:
    name: ${DOCKER_NETWORK_NAME}

1 个答案:

答案 0 :(得分:0)

Compose的内部概念为project name,大多数Docker对象名称都以该名称为前缀。例如,如果您位于名为foo的目录中,并且您的Compose文件包含

networks:
  something:

然后运行docker network ls,您将看到一个名为foo_something的网络。

通常,我建议不要手动指定网络,卷或容器的名称。您可以在docker-compose.yml文件中选择要使用的任何名称,并且该名称的作用范围仅限于该文件。

相反,这要求在不同名称的目录中进行系统的不同安装,设置COMPOSE_PROJECT_NAME环境变量(可能在.env文件中)或始终使用{{1} }标志。

在非常特殊的网络情况下,撰写provides a network named default是默认的,如果您实际上没有docker-compose -p块。使用此功能实际上没有任何缺点,并且大多数应用程序不需要多个内部网络。我只会完全忽略networks: