Прокси от Traefik к Docker-контейнерам выдает 404 не для всех поддоменов - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь настроить набор контейнерных приложений, работающих на одном сервере Ubuntu. Я хочу, чтобы каждый работал на своем собственном поддомене и использовал Traefik для прокси-запросов к каждому контейнеру на основе домена. Мой SSL-сертификат является групповым сертификатом, охватывающим домен и все поддомены Моя проблема в том, что я не смог увидеть приложения, когда перешел к тому, что, по моему мнению, должно быть правильным поддоменом.

Вот конфигурация toml для основного контейнера Traefik (извлекается из док-концентратора, кстати):

defaultEntryPoints = ["http", "https"]

[entryPoints]

[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"

[entryPoints.https]
address = ":443"

[entryPoints.https.tls]

[acme]
email = "myemail@gmail.com"
storage = "/acme.json"
entryPoint = "https"
OnHostRule = false

[[acme.domains]]
  main = "*.mydomain.com"
  sans = ["mydomain.com"]

[acme.dnsChallenge]
  provider = "digitalocean"
  delayBeforeCheck = 0

[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "mydomain.com"
watch = true
exposedbydefault = false

И docker-compose.yml для контейнера Traefik:

version: '3'
services:
  traefik:
    image: traefik:v1.7.9
    #command: --docker
    ports:
      - "80:80"
      - "443:443"
    restart: always
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "./traefik.toml:/traefik.toml"
      - "./acme.json:/acme.json"
    environment:
      - DO_AUTH_TOKEN
    networks:
      - default

Вот пример одного из файлов docker-compose.yml и Dockerfile для одного из приложений, которые я пытаюсь запустить с субдомена:

докер-compose.yml

version: '3'
services:
  servicename:
    build: .
    labels:
      - "traefik.enabled=true"
      - "traefik.backend=servicename"
      - "traefik.frontend.rule=Host:servicename.domain.com"
      - "traefik.docker.network=traefik_default"
      - "traefik.port=8001"
    restart: always
    networks:
      - traefik_default
networks:
  traefik_default:
    external:
      name: traefik_default

Dockerfile

# pull official base image
FROM ruby:2.0.0

# Copy project
COPY . .

# install dependencies
RUN bundle install

EXPOSE 8001/tcp

CMD ["bundle", "exec", "rackup", "--host", "0.0.0.0", "-p", "8001"]

Контейнерное приложение отлично работает без Traefik, но я пока не смог его подключить. Кто-нибудь знает, что может быть не так?

...