我有点困惑。在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 CREATE网络中,所以我决定删除它,只留下我的服务(eliko)标题中的网络名称。但后来我收到了一个错误:ERROR: Service "eliko" uses an undefined network "proxy"
所以我的问题是......这究竟是做什么的:
networks:
proxy:
external: true
据我所知,这是:
networks:
- proxy
连接到网络,所以以前应该创建网络?如果我用docker network create
创建一个网络,它是相同的还是?
这里有点困惑......
顶级的networks
节告诉码头工作者“这些是存在的网络”。如果没有这个,当您尝试将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
然后compose将实际创建一个名为project_proxy
的网络(其中project
默认是包含docker-compose.yml
的目录的名称)。这只是因为你宣称网络是external
,compose知道你想要使用现有的网络。