Конфигурация traefik всегда заканчивается плохим шлюзом с салоном - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь запустить docker на моем личном сервере и сделать его доступным через traefik (он работает, если я выставляю напрямую порт).

Вот команда, которую я попробовал.

# This is not working, and always ends in Bad Gateway
sudo docker run --detach \
    --name thelounge \
    --volume ~/.thelounge:/var/opt/thelounge \
    --restart always \
    --label traefik.enable=true \
    --label 'traefik.http.routers.thelounge.rule=Host(`irc.example.fr`)' \
    --label 'traefik.http.routers.thelounge.priority=10' \
    --label 'traefik.http.routers.thelounge.entryPoints=websecure' \
    --label 'traefik.http.routers.thelounge.tls=true' \
    --label 'traefik.http.routers.thelounge.tls.certresolver=example' \
    thelounge/thelounge:latest

Обратите внимание: пример certResolver работает для любого другого домена, и у меня также есть эта конфигурация для него:

  [http.routers.Router-Example-To-Legacy]
    # won't listen to entry point web
    entryPoints = ["websecure"]
    # https://docs.traefik.io/routing/routers/#rule
    # rule = "Host(`localhost`)"
    rule = "HostRegexp(`example.fr`, `{subdomain:.*}.example.fr`)"
    service = "legacy-webserver-service"
    priority = 2
    [http.routers.Router-Example-To-Legacy.tls]
      certResolver = "example"
      [[http.routers.Router-Example-To-Legacy.tls.domains]]
        main = "example.fr"
        sans = ["*.example.fr"]

Проблема: у меня плохой шлюз на curl https://irc.example.fr

1 Ответ

0 голосов
/ 20 марта 2020

Это в основном запуск docker непосредственно внутри сети traefik. Последнее слово имеет значение.

Мне нужно было добавить сеть traefik в мою команду. Чтобы получить сеть, я просто использовал docker network list.

Также я передумал использовать только командную строку и создал полный docker -композитный файл.

version: '3'

services:
  homeirc:
    image: thelounge/thelounge:latest
    volumes:
      - ./thelounge:/var/opt/thelounge
    restart: always
    networks:
      - traefik
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.homeirc.rule=Host(`irc.example.fr`)"
      - "traefik.http.routers.homeirc.priority=10"
      - "traefik.http.routers.homeirc.entryPoints=websecure"
      - "traefik.http.routers.homeirc.tls=true"
      - "traefik.http.routers.homeirc.tls.certresolver=example"
      - "traefik.http.services.homeirc.loadbalancer.server.port=9000"
      # Http redirect to https
      - "traefik.http.routers.homeirc-non-secure.rule=Host(`irc.example.fr`)"
      - "traefik.http.routers.homeirc-non-secure.priority=10"
      - "traefik.http.routers.homeirc-non-secure.entryPoints=web"
      - "traefik.http.routers.homeirc-non-secure.middlewares=home-irc-https"
      - "traefik.http.middlewares.home-irc-https.redirectscheme.scheme=https"
      - "traefik.http.middlewares.home-irc-https.redirectscheme.permanent=true"

networks:
  traefik:
    external:
      name: traefikexample_default
...