我有点困惑。在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
创建一个网络,该网络是相同的吗?
这里有些困惑...
答案 0 :(得分:1)
顶级networks
节告诉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
然后compose实际上将创建一个名为project_proxy
的网络(其中project
默认是包含您的docker-compose.yml
的目录的名称)。仅仅是因为您已声明网络为external
,才知道您要使用现有网络。