为什么我必须在docker-compose.yml中两次陈述网络



我有点困惑。在docker-compose.yml文件中:

version: "3"
networks:
  proxy:
    external: true
services:
  eliko:
    image: irmscher/eliko:v1
    labels:
      - traefik.backend=eliko
      - traefik.frontend.rule=Host:eliko.bloggercraft.com
      - traefik.docker.network=proxy
    networks:
      - proxy

为什么我必须两次指定网络?第一次在networks: proxy和服务中的第二次 networks: -proxy

我实际上已经用docker network create proxy创建了"代理"网络。我以为networks:在Docker-Compose创建网络中,因此我决定将其删除,仅在我的服务(Eliko(标题中留下网络名称。但是后来我收到了一个错误: ERROR: Service "eliko" uses an undefined network "proxy"

所以我的问题是..这到底是什么:

networks:
  proxy:
    external: true

据我了解,这是:

    networks:
      - proxy

连接到网络,因此以前应该创建网络?如果我使用docker network create创建网络,它是相同的还是?

这里有点困惑...

顶级 networks stanza正在告诉docker-compose"这些是存在的网络"。没有这些,当您尝试将eliko容器连接到proxy网络时,Docker-Compose将不知道该怎么办。你会得到这个:

ERROR: Service "eliko" uses an undefined network "proxy"

请记住,在标准案例中,Docker-Compose中的网络以项目名称为前缀。如果您有非外部网络,则是这样:

version: "3"
networks:
  proxy:
services:
  eliko:
    image: irmscher/eliko:v1
    labels:
      - traefik.backend=eliko
      - traefik.frontend.rule=Host:eliko.bloggercraft.com
      - traefik.docker.network=proxy
    networks:
      - proxy

然后,撰写实际上将创建一个名为project_proxy的网络(默认情况下,project是包含docker-compose.yml的目录的名称(。仅仅是因为您已将网络声明为external,才知道您要使用现有网络。

最新更新