【问题标题】:Traefik not updating when services are deployed to docker swarm将服务部署到 docker swarm 时,Traefik 未更新
【发布时间】:2021-01-11 17:51:44
【问题描述】:

我有一个在 docker 中运行的 traefik 环境。最初我在标准容器中运行服务。我没有将容器部署到 docker swarm,我也为 traefik 完成了此操作,其中容器仅部署到我的 swarm 管理器。

由于某种原因,traefik 成功注册了我给它的主机名,并且可以正常访问。 但是,当我将任何其他服务部署到 swarm 时,traefik 不会接受它。 还有另一项服务已部分工作。我已将 heimdall 部署到 docker swarm,可以从 gateway.docker.swarm:8091 访问,但我也不想要该端口。

我的 traefik compose 文件如下:

version: '3.3'
networks:
  swarm-network:
    driver: overlay
services:
  traefik:
    # The official v2 Traefik docker image
    image: traefik
    deploy:
      placement: 
        constraints: 
          - node.role == manager
      labels:
        - "traefik.enable=true"
        - "traefik.docker.network=pi_swarm-network"
        - "traefik.http.routers.traefik.entrypoints=http"
        - "traefik.http.services.traefik.loadbalancer.server.port=8080"
        - "traefik.http.routers.traefik.rule=Host(`traefik.docker.swarm`)"
        
    # Enables the web UI and tells Traefik to listen to docker
    command: 
    - '--api.insecure=true'
    - '--providers.docker=true'
    - '--providers.docker.swarmmode=true'
    - '--providers.docker.defaultRule=Host("docker.swarm")'
    - '--providers.docker.watch=true' 
    - '--providers.docker.swarmModeRefreshSeconds=15s'
    # Metrics configuration for influx db.
    - '--metrics=true'
    - '--metrics.influxdb=true'
    - '--metrics.influxdb.address=192.168.8.122:8086'
    - '--metrics.influxdb.protocol=http'
    - '--metrics.influxdb.database=traefik'
    - '--metrics.influxdb.addEntryPointsLabels=true'
    - '--metrics.influxdb.addServicesLabels=true'
    - '--metrics.influxdb.pushInterval=10s'
    # Tracing
    - '--tracing=true'
    - '--tracing.zipkin=true'
    - '--tracing.zipkin.httpEndpoint=http://192.168.8.117:9411/api/v2/spans'
    - '--log' 
    - '--accesslog'
    ports:
      # The HTTP port
      - "80:80"
      # The Web UI (enabled by --api.insecure=true)
      - "8080:8080"
    networks:
      - swarm-network
    volumes:
      # So that Traefik can listen to the Docker events
      - /var/run/docker.sock:/var/run/docker.sock
   

我正在运行的另一个服务的示例是 heimdall,它具有以下 compose 文件:

version: "3"
networks:
  swarm-network:
    external:
      name: pi_swarm-network
services:
 heimdall:
    image: ghcr.io/linuxserver/heimdall
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
    deploy:
      placement: 
        constraints: 
          - node.labels.tier == web
      labels:
        - "traefik.enable=true"
        - "traefik.docker.network=pi_swarm-network"
        - "traefik.http.routers.heimdall.entrypoints=http"
        - "traefik.http.services.heimdall.loadbalancer.server.port=8091"
        - "traefik.http.routers.heimdall.rule=Host(`gateway.docker.swarm`)"
    ports:
      - 8091:80
    restart: unless-stopped
    networks:
      - swarm-network

谁能看出我做错了什么?

【问题讨论】:

    标签: docker docker-swarm traefik


    【解决方案1】:

    我已经解决了问题。

    在我的撰写文件中,我使用的是“traefik.http.services.heimdall.loadbalancer.entrypoints=http” 也 "traefik.http.routers.heimdall.entrypoints=http"

    这是不正确的,只需 "traefik.http.routers.heimdall.entrypoints=http"

    对于 heimdall,我还针对 8091 的外部端口,而实际上我需要针对 80 的内部端口

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 2022-10-24
      • 1970-01-01
      相关资源
      最近更新 更多