Плохой шлюз на трафике докер - PullRequest
1 голос
/ 29 марта 2019

Я строю трафик с облачной вспышкой CDN. Я использовал команду запуска контейнера Docker для выполнения моего контейнера Docker, выполняемого Drone CI. У меня возникла проблема при успешной сборке контейнера Docker, который приводит к повреждению шлюза на поддомене.

докер-compose.yml

version: '3'

services:
  traefik:
    image: traefik:latest
    container_name: traefik
    restart: always
    domainname: ${DOMAINNAME}
    networks:
      - traefik_proxy
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    environment:
      - CF_API_EMAIL=${CLOUDFLARE_EMAIL}
      - CF_API_KEY=${CLOUDFLARE_API_KEY}
    labels:
      - "traefik.enable=true"
      - "traefik.backend=traefik"
      - "traefik.frontend.rule=Host:monitor.${DOMAINNAME}"
      - "traefik.port=8080"
      - "traefik.docker.network=traefik_proxy"
      - "traefik.frontend.headers.SSLRedirect=true"
      - "traefik.frontend.headers.STSSeconds=315360000"
      - "traefik.frontend.headers.browserXSSFilter=true"
      - "traefik.frontend.headers.contentTypeNosniff=true"
      - "traefik.frontend.headers.forceSTSHeader=true"
      - "traefik.frontend.headers.SSLHost=example.com"
      - "traefik.frontend.headers.STSIncludeSubdomains=true"
      - "traefik.frontend.headers.STSPreload=true"
      - "traefik.frontend.headers.frameDeny=true"
      - "traefik.frontend.auth.basic.users:${HTTP_USERNAME}:${HTTP_PASSWORD}"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /etc/traefik:/etc/traefik
      - /etc/docker/shared:/shared

networks:
  traefik_proxy:
    external:
      name: traefik_proxy

Traefik.toml

nsecureSkipVerify = true
defaultEntryPoints = ["https", "http"]

# WEB interface of Traefik - it will show web page with overview of frontend and backend configurations
[api]
  entryPoint = "traefik"
  dashboard = true
  address = ":8080"

# Force HTTPS
[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
    entryPoint = "https"
  [entryPoints.https]
  address = ":443"
    [entryPoints.https.tls]

# Let's encrypt configuration
[acme]
email = "example@gmail.com" #any email id will work
storage="acme.json"
entryPoint = "https"
acmeLogging=true
onDemand = false #create certificate when container is created
[acme.dnsChallenge]
  provider = "cloudflare"
  delayBeforeCheck = 300
[[acme.domains]]
   main = "example.com"
[[acme.domains]]
   main = "*.example.com"

# Connection to docker host system (docker.sock)
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "example.com"
watch = true
# This will hide all docker containers that don't have explicitly
# set label to "enable"
exposedbydefault = false

Команда, которую я использовал для запуска Docker-контейнера, выполняемого Drone:

запуск Docker-контейнера -d --name example-development --restart = исключением- остановлено --label "traefik.backend = пример-разработки" --label "traefik.frontend.rule = Host: subdomain.example.com" --label "traefik.enable = false" --label "traefik.port = 6611" --expose 6611 cloud.canister.io:5000/username/repo

Мой док-контейнер слушает http://127.0.0.1:6611

Приведенные выше примеры кодов приводят к Ошибка 504 Тайм-аут шлюза .

1 Ответ

0 голосов
/ 29 марта 2019

Traefik должна иметь общую сеть с контейнерами, к которым она подключается. В этом случае вам нужно запустить контейнеры с --net=traefik_proxy.

Если ваш контейнер находится в нескольких сетях, вам также понадобится метка traefik.docker.network=traefik_proxy, чтобы указать traefik, какую из этих сетей использовать.

...