Traefik - Docker Swarm - основная проблема маршрутизации - PullRequest
2 голосов
/ 02 мая 2019

Моя конфигурация - это простой Docker Swarm (в Docker для Windows) с контейнером Treafik и очень простым контейнером Spring Boot 'echo'.

Я бы хотел перенаправить запрос браузера «localhost / traefik» на панель инструментов Traefik и «localhost / echo / что-то» в простое эхо-приложение Sprint Boot.

Ожидается работа:

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

Ожидается, что не сработает, но обходит Трафик (неправильно):

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

1 Ответ

2 голосов
/ 03 мая 2019

Первая проблема была проблема с сетью. Решено, благодаря умному Джиму.

Другая проблема заключалась в том, что я использовал неправильный номер порта. Для маршрутизации от внешнего интерфейса '/ echo' к внутреннему, раздел 'ports' НЕ используется. Я мог бы направить прямо к открытому порту приложения 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
...