据我所知,它像this:
docker-traefik.yml
:
version: '3'
services:
traefik:
image: traefik
command: --docker # enable Docker Provider
# use Docker Swarm Mode as data provider
--docker.swarmmode
ports:
- "80:80"
volumes:
# for it to be able to listen to Docker events
- /var/run/docker.sock:/var/run/docker.sock
docker-whoami.yml
:
version: '3'
networks:
traefik_default:
external: true
services:
whoami:
image: containous/whoami
networks:
# add to traefik network
- traefik_default
deploy:
labels:
# whoami is on port 80
- "traefik.port=80"
# whoami is on traefik_default network
- "traefik.docker.network=traefik_default"
# when to forward requests to whoami
- "traefik.frontend.rule=Host:example.com"
在这里让我引述documentation:
必填标签:
traefik.frontend.rule
traefik.port
-如果没有此日志,调试日志将显示该服务被故意过滤掉了。traefik.docker.network
-否则可能会发生504。...
traefik.docker.network
覆盖用于连接到容器的默认docker网络。 [1]
traefik.port=80
注册该端口。当容器公开多个端口时很有用。
但是为什么不能仅将裸露的端口用作默认值traefik.port
?从我的角度看,它不需要traefik.docker.network
(也就是说,如果traefik_default
是第一个服务的网络)就可以使用。我什么时候可以获得504?
答案 0 :(得分:0)
但是为什么不能只将暴露的端口作为traefik.port的默认值呢?
如果您的容器有3个或4个裸露端口,traefik应该使用哪个端口?那么,谁对traefik说,这些端口中的哪一个是正确的?因此,您可以-使用traefik.port
。使用已配置服务的默认端口在哪里出现问题?
U应该公开80、443和8080-因此,http / https网页应为80和443,traefik仪表板为8080。如果您不想使用仪表板,则无需暴露8080。
我在作曲家文件中没有看到配置为@ traefik的任何网络-应该没有网络吗? Ur服务和traefik必须位于同一网络中。否则,traefik无法达到您的要求并继续前进。
端点在哪里?