Traefik用于在Docker Swarm中运行的基本配置

时间:2019-06-22 08:32:39

标签: docker docker-swarm traefik swarm docker-swarm-mode

据我所知,它像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?

1 个答案:

答案 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无法达到您的要求并继续前进。

端点在哪里?