Я пытаюсь реализовать SSL с Traefik в Docker, но получаю ошибку «502 Bad Gateway» почти для всех контейнеров внутри (кроме Traefik и Prometheus). Даже при чистой установке у меня возникают те же проблемы, и яне имеют журналов ошибок для этих контейнеров (указывающих на то, что они должны работать нормально, и без использования Traefik они выглядят нормально). Что-то не так с тем, как я это реализовал? Или, может быть, я что-то неправильно понял в traefik?
Я проверил, доступны ли порты, добавлен ли субдомен в облачный DNS и что службы и сети работают и работают. Я также попытался перезапустить контейнеры. Все сервисы доступны без прохождения через Traefik (вход в порт напрямую по URL)
(переменная X_SERVER находится в файле .env, она разрешается в такие переменные, как: grafana.mywebsite.com)
Вот мой docker-compose.yml:
version: '3'
networks:
private:
web:
external:
name: web
services:
# TRAEFIK
traefik:
image: traefik:maroilles-alpine
ports:
- "80:80"
- "443:443"
- "8200:8200"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./config/traefik/acme:/etc/traefik/acme
- ./config/traefik/traefik.toml:/etc/traefik/traefik.toml:ro
networks:
- web
labels:
- "traefik.enable=true"
- "traefik.frontend.rule=Host:${TRAEFIK_SERVER}"
- "traefik.port=8200"
- "traefik.docker.network=web"
restart: always
# PROMETHEUS
prometheus:
image: prom/prometheus:v2.0.0
container_name: prometheus
volumes:
- ./docker/prometheus/:/etc/prometheus
- prometheus-data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--storage.tsdb.retention=200h'
ports:
- "9090:9090"
depends_on:
- cadvisor
networks:
- web
- private
labels:
- "traefik.enable=true"
- "traefik.frontend.rule=Host:${PROMETHEUS_SERVER}"
- "traefik.port=9090"
- "traefik.docker.network=web"
restart: always
# CADVISOR
cadvisor:
image: google/cadvisor
container_name: cadvisor
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
ports:
- "8463:8080"
networks:
- private
labels:
- "traefik.enable=true"
- "traefik.frontend.rule=Host:${CADVISOR_SERVER}"
- "traefik.port=8463"
- "traefik.docker.network=web"
restart: always
# GRAFANA
grafana:
image: grafana/grafana:4.6.2
environment:
- GF_SERVER_ROOT_URL=${GRAFANA_SERVER}
container_name: grafana
volumes:
- grafana-data:/var/lib/grafana
ports:
- "3155:3000"
networks:
- web
- private
labels:
- "traefik.enable=true"
- "traefik.frontend.rule=Host:(GRAFANA_SERVER}"
- "traefik.port=3155"
- "traefik.docker.network=web"
restart: always
volumes:
prometheus-data: {}
grafana-data: {}
Вот мой traefik.toml:
debug = true
logLevel = "DEBUG"
defaultEntryPoints = ["https","http"]
[web]
address = ":8200"
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
[retry]
[acme]
email = "my.awesome@email.com"
storageFile = "/etc/traefik/acme/acme.json"
entryPoint = "https"
onHostRule = true
[acme.httpChallenge]
entryPoint = "http"
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "mywebsite.com"
watch = true
exposedByDefault = false
Я ожидал, что все мои страницы будут доступны при использовании HTTPS,проходит через Traefik, но вместо этого некоторые из них показывают ошибку 502 Bad Gateway (например, Grafana), другие работают, как и ожидалось (Prometheus, Traefik), некоторые даже недоступны (apache). Если я не использую Traefik (и, таким образом, получаю доступ напрямую через правильный порт, например: http://mywebsite.com:3155), страница отображается правильно, но она не защищена и не использует Traefik