Traefik v2监听端口

时间:2019-09-27 06:32:51

标签: docker docker-compose dockerfile docker-swarm traefik

我正在将 Traefik v2 与Docker Swarm一起使用。我想实现以下路由:

  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-net网络docker 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时,提示“无法访问此网站”。

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

1 个答案:

答案 0 :(得分:0)

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

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

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

希望这对某人有帮助。 :)