首页 > 解决方案 > Traefik v2 监听端口

问题描述

我正在使用带有 Docker Swarm 的Traefik v2 。我想实现以下路由:

  1. mydomain.com:9000 -> Traefik 仪表板
  2. mydomain.com:5000 -> 我的应用程序

docker-compose-traefik.yml

version: "3.7"

services:
  traefik:
    image: "traefik:v2.0"
    networks:
      - traefik-net
    command:
      - "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker.swarmMode=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:5000"
    ports:
      - "80:80"
      - "9000:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

networks:
  traefik-net:
    external:
      name: traefik-net

docker-compose-whoami.yml

version: "3.7"

services:
  whoami:
    image: "jwilder/whoami"
    networks:
      - traefik-net
    deploy:
      replicas: 3
      labels:
        - "traefik.enable=true"
        - "traefik.http.routers.whoami.rule=Host(`mydomain.com`)"
        - "traefik.http.routers.whoami.entrypoints=web"
        - "traefik.http.services.whoami.loadbalancer.server.port=8000"

networks:
  traefik-net:
    external:
      name: traefik-net

jwilder/whoami在其Dockerfile中公开端口 8000 。我想将端口 5000(我在 docker-compose-traefik.yml 中定义的入口点)重定向到容器中的端口 8000。

我创建了网络traefik-netdocker network create -d bridge traefik-net.

我部署了两个堆栈:

  1. docker-stack deploy -c docker-compose-traefik.yml Traefik
  2. docker-stack deploy -c docker-compose-whoami.yml Whoami

当我访问 mydomain.com:9000 时,它会打开 Traefik 仪表板。当我访问 mydomain.com:5000 时,它说“无法访问此站点”。

我的问题是:如何将请求重定向到端口 5000 (mydomain.com:5000) 到 whoami 容器内的端口 8000?

标签: dockerdocker-composedockerfiledocker-swarmtraefik

解决方案


对于其他有类似问题的人,我找到了解决方案。我需要更改docker-compose-traefik.yml 中的端口部分

ports:
  - "80:80"
  - "9000:8080"

ports:
  - "80:80"
  - "9000:8080"
  - "5000:5000" <-- add this

希望这可以帮助某人。:)


推荐阅读