【问题标题】:Traefik - Docker Swarm - basic routing issueTraefik - Docker Swarm - 基本路由问题
【发布时间】:2019-05-02 19:12:19
【问题描述】:

我的配置是一个简单的 Docker Swarm(在 Docker for Windows 上),带有一个 Treafik 容器和一个非常简单的 Spring Boot 'echo' 容器。

我想将“localhost/traefik”的浏览器请求转发到 Traefik 仪表板,并将“localhost/echo/something”转发到一个简单的 Sprint Boot echo 应用程序。

预计工作:

localhost/treafik => gives a "Gateway timeout"
localhost/echo/something => gives a "Gateway timeout"

预计不起作用,但绕过 Traefik(错误):

localhost:8080 => shows the Traefik dashboard
localhost:8082/echo/something => { "status":"something" }

如何改进 docker-compose.yml 文件以获得预期结果?这可能与“网络”有关吗?在创建任何网络时,即使是覆盖,都会给出错误消息。

version: '3.7'
services:
  traefik:
    image: traefik:latest
    command: --api --docker
    restart: always
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - //k/data/slackbot/traefik.toml:/traefik.toml
    ports:
      - "80:80"
      - "8080:8080"
    labels:
      - "traefik.enable=true"
      - "traefik.frontend.rule=Host:localhost;PathPrefixStrip:/traefik"
      - "traefik.port=8080"
      - "traefik.protocol=http"
      - "traefik.backend=traefik"
  slackbotsimple:
    image: solvedshared/slackbotsimple:latest
    ports:
      - 8082:8080
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    labels:
      - "traefik.enable=true"
      - "traefik.frontend.rule=Host:localhost;PathPrefix:/echo"
      - "traefik.port=8082"
      - "traefik.protocol=http"
      - "traefik.backend=slackbotsimple

【问题讨论】:

    标签: docker-compose docker-swarm traefik


    【解决方案1】:

    第一个问题是网络问题。解决了,多亏了聪明的吉姆。

    另一个问题是我使用了错误的端口号。要从前端“/echo”路由到后端,不使用“端口”部分。我可以直接路由到 slackbot 应用程序的暴露端口!

    查看端口配置:只有 80 可用。

    version: '3.7'
    services:
      traefik:
        image: traefik:latest
        command: --api --docker
        restart: always
        networks:
          - slackbotnet
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - //k/data/slackbot/traefik.toml:/traefik.toml
        ports:
          - "80:80"
        labels:
          - "traefik.enable=true"
          - "traefik.docker.network=slackbotnet"
          - "traefik.frontend.rule=Host:localhost;PathPrefixStrip:/traefik"
          - "traefik.port=8080"
          - "traefik.protocol=http"
          - "traefik.backend=traefik"
      slackbotsimple:
        image: solvedshared/slackbotsimple:latest
        networks:
          - slackbotnet
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
        labels:
          - "traefik.enable=true"
          - "traefik.docker.network=slackbotnet"
          - "traefik.frontend.rule=Host:localhost;PathPrefix:/echo"
          - "traefik.port=8080"
          - "traefik.protocol=http"
          - "traefik.backend=slackbotsimple"
    
    networks:
      slackbotnet:
        name: slackbotnet
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-20
      相关资源
      最近更新 更多