首页 > 解决方案 > 在 Docker Swarm 中运行 Traefik 时如何解决“使用空前端规则过滤容器”的问题

问题描述

在多台机器的 Docker Swarm 集群中运行时,Traefik 不会创建前端或后端。

OS version: 10.14.2 (18C54)我按照本教程在我的 MacBook ( ) 上创建了 Docker Swarm : https ://docs.docker.com/get-started/part4/ 。我笔记本电脑上的 docker-machine 有版本0.14.0, build 89b8332,而在虚拟机上运行的 docker 引擎有版本18.09.1, build 4c52b90. 以下是创建的机器的摘要:

码头机器

一旦机器启动并运行并创建了 swarm,我在我的 swarm 中部署了以下堆栈:

version: '3.4'

services:
  api_gateway:
    image: traefik
    command: --api \
      --docker \
      --docker.swarmmode \
      --docker.watch \
      --logLevel=DEBUG
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - external
      - internal
    deploy:
      placement:
        constraints: [node.role==manager]
  redis:
    image: redis:latest
    command: ["redis-server", "--appendonly", "yes"]
    volumes:
      - redis:/data
    networks:
      - internal
    deploy:
      placement:
        constraints: [node.role==worker]
  nginx-test:
    image: valian/nginx-test-page
    labels:
      - "traefik.frontend.rule=Host:api.local.mydomain.com"
    depends_on:
      - redis
    networks:
      - external
      - internal
    deploy:
      placement:
        constraints: [node.role==worker]
networks:
  external:
    driver: overlay
    external: true
  internal:
    driver: overlay
volumes:
  redis:

下面的屏幕截图显示了正在运行的服务和 swarm 的集群可视化工具:

搬运工服务

搬运工集群

据我了解,Traefik应该已经发现了服务nginx-test,然后为它创建了前端和后端。这是 Traefik 仪表板的截图:

traefik 仪表板

似乎api_gateway服务(Traefik)无法识别为nginx-test服务定义的前端规则,如下面的日志所示:

2019-02-06T09:04:37.139463121Z time="2019-02-06T09:04:37Z" level=debug msg="Filtering container with empty frontend rule webserver_nginx-test.1 "

我在 Traefik 设置上遗漏了什么吗?在 Docker Swarm 集群中运行反向代理时,是否有另一种设置方法?

标签: docker-swarmtraefik

解决方案


使用 Swarm,标签部分必须在该deploy部分中定义。

https://docs.traefik.io/configuration/backends/docker/#using-docker-with-swarm-mode

version: "3"
services:
  whoami:
    deploy:
      labels:
        traefik.docker.network: traefik

推荐阅读