Docker 找不到Traefik Web UI服务器

Docker 找不到Traefik Web UI服务器,docker,docker-compose,reverse-proxy,traefik,Docker,Docker Compose,Reverse Proxy,Traefik,我目前正在尝试在docker容器中的RPi3上安装Traefik。到目前为止,Traefik容器中的日志显示验证成功,服务器以证书响应: pi@raspberrypi:~/docker $ sudo docker-compose logs -tf --tail="50" traefik Attaching to traefik traefik | 2018-05-30T06:59:20.617977807Z legolog: 2018/05/30 06:59:20 [INFO] acme:

我目前正在尝试在docker容器中的RPi3上安装Traefik。到目前为止,Traefik容器中的日志显示验证成功,服务器以证书响应:

pi@raspberrypi:~/docker $ sudo docker-compose logs -tf --tail="50" traefik
Attaching to traefik
traefik    | 2018-05-30T06:59:20.617977807Z legolog: 2018/05/30 06:59:20 [INFO] acme: Registering account for m5@aomosk.com
traefik    | 2018-05-30T06:59:21.369400647Z legolog: 2018/05/30 06:59:21 [INFO][*.aomosk.com] acme: Obtaining bundled SAN certificate
traefik    | 2018-05-30T06:59:21.389707565Z legolog: 2018/05/30 06:59:21 [INFO][aomosk.com] acme: Obtaining bundled SAN certificate
traefik    | 2018-05-30T06:59:22.125375140Z legolog: 2018/05/30 06:59:22 [INFO][*.aomosk.com] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz/aN3AZEq8PTXBTYi73jW-yXvHYVC-5-s9YJzcdlJA-M0
traefik    | 2018-05-30T06:59:22.125615035Z legolog: 2018/05/30 06:59:22 [INFO][aomosk.com] acme: Trying to solve DNS-01
traefik    | 2018-05-30T06:59:22.236071160Z legolog: 2018/05/30 06:59:22 [INFO][aomosk.com] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz/Le-deKqprPhYN8kj80DH1cIzcxVuk2TXZa_fKgm2is8
traefik    | 2018-05-30T06:59:22.236208295Z legolog: 2018/05/30 06:59:22 [INFO][aomosk.com] acme: Trying to solve DNS-01
traefik    | 2018-05-30T06:59:22.847749525Z legolog: 2018/05/30 06:59:22 [INFO][aomosk.com] Checking DNS record propagation using [127.0.0.11:53]
traefik    | 2018-05-30T06:59:22.908593248Z legolog: 2018/05/30 06:59:22 [INFO][aomosk.com] Checking DNS record propagation using [127.0.0.11:53]
traefik    | 2018-05-30T06:59:32.932664129Z legolog: 2018/05/30 06:59:32 [INFO][aomosk.com] The server validated our request
traefik    | 2018-05-30T06:59:32.953775211Z legolog: 2018/05/30 06:59:32 [INFO][aomosk.com] The server validated our request
traefik    | 2018-05-30T06:59:33.186498364Z legolog: 2018/05/30 06:59:33 [INFO][*.aomosk.com] acme: Validations succeeded; requesting certificates
traefik    | 2018-05-30T06:59:33.350874848Z 2018/05/30 06:59:33 dns_challenge.go:94: Error cleaning up aomosk.com: Cloudflare API Error
traefik    | 2018-05-30T06:59:33.350992816Z      Error: 81061: The record does not exist.
traefik    | 2018-05-30T06:59:33.351063284Z legolog: 2018/05/30 06:59:33 [INFO][aomosk.com] acme: Validations succeeded; requesting certificates
traefik    | 2018-05-30T07:00:53.579052808Z legolog: 2018/05/30 07:00:53 [INFO][*.aomosk.com] Server responded with a certificate.
traefik    | 2018-05-30T07:00:59.363610528Z legolog: 2018/05/30 07:00:59 [INFO][aomosk.com] Server responded with a certificate.
这是我的docker-compose.yml文件的副本:

version: "3.6"
services:
  traefik:
    hostname: traefik
    image: traefik:latest
    container_name: traefik
    restart: always
    domainname: aomosk.com
    networks:
      - default
      - traefik_proxy
    ports:
      - "80:80"
      - "443:443"
#      - "XXXX:8080"
    environment:
      - CLOUDFLARE_EMAIL=<my_domain_email>
      - CLOUDFLARE_API_KEY=<my_cloudflare_api_key>
    labels:
      - "traefik.enable=true"
      - "traefik.backend=traefik"
      - "traefik.frontend.rule=Host:traefik.aomosk.com"
#      - "traefik.frontend.rule=Host:${DOMAINNAME}; PathPrefixStrip: /traefik"
      - "traefik.port=8080"
      - "traefik.docker.network=traefik_proxy"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /home/pi/docker/traefik:/etc/traefik
      - /home/pi/docker/shared:/shared
networks:
  traefik_proxy:
    external:
      name: traefik_proxy
  default:
    driver: bridge
~                  
版本:“3.6”
服务:
特拉菲克:
主机名:traefik
图片:traefik:最新
容器名称:traefik
重新启动:始终
域名:aomosk.com
网络:
-违约
-traefik_代理
端口:
- "80:80"
- "443:443"
#-“XXXX:8080”
环境:
-CLOUDFLARE\u电子邮件=
-CLOUDFLARE\u API\u密钥=
标签:
-“traefik.enable=true”
-“traefik.backend=traefik”
-“traefik.frontend.rule=Host:traefik.aomosk.com”
#-“traefik.frontend.rule=Host:${DOMAINNAME};PathPrefixStrip:/traefik”
-“traefik.port=8080”
-“traefik.docker.network=traefik\u代理”
卷数:
-/var/run/docker.sock:/var/run/docker.sock:ro
-/home/pi/docker/traefik:/etc/traefik
-/home/pi/docker/shared:/shared
网络:
traefik_代理:
外部:
名称:traefik_代理
违约:
司机:驾驶台
~                  
这是我的traefik.toml文件:

#debug = true

logLevel = "ERROR" #DEBUG, INFO, WARN, ERROR, FATAL, PANIC
InsecureSkipVerify = true
defaultEntryPoints = ["https", "http"]

# WEB interface of Traefik - it will show web page with overview of frontend and backend configurations
[web]
address = ":8080"
  [web.auth.basic]
  usersFile = "/shared/.htpasswd"

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

[file]
  directory = "/etc/traefik/rules/"
  watch = true

# Let's encrypt configuration
[acme]
email = "<my_domain_email>" #any email id will work
storage="/etc/traefik/acme/acme.json"
entryPoint = "https"
acmeLogging=true
onDemand = false #create certificate when container is created
[acme.dnsChallenge]
  provider = "cloudflare"
  delayBeforeCheck = 0
[[acme.domains]]
   main = "aomosk.com"
[[acme.domains]]
   main = "*.aomosk.com"

# Connection to docker host system (docker.sock)
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "aomosk.com"
watch = true
# This will hide all docker containers that don't have explicitly
# set label to "enable"
exposedbydefault = false
~                        
#debug=true
logLevel=“ERROR”#调试、信息、警告、错误、致命、恐慌
unsecureskipverify=true
defaultEntryPoints=[“https”,“http”]
#Traefik的WEB界面-它将显示包含前端和后端配置概述的网页
[网页]
address=“:8080”
[web.auth.basic]
usersFile=“/shared/.htpasswd”
#强制HTTPS
[入口点]
[entryPoints.http]
address=“:80”
[entryPoints.http.redirect]
entryPoint=“https”
[entryPoints.https]
address=“:443”
[entryPoints.https.tls]
[文件]
directory=“/etc/traefik/rules/”
手表=真的
#让我们加密配置
[顶点]
email=”“#任何电子邮件id都可以使用
storage=“/etc/traefik/acme/acme.json”
entryPoint=“https”
acmeLogging=真
onDemand=false#创建容器时创建证书
[acme.dnsChallenge]
provider=“cloudflare”
delayBeforeCheck=0
[[acme.domains]]
main=“aomosk.com”
[[acme.domains]]
main=“*.aomosk.com”
#连接到docker主机系统(docker.sock)
[码头工人]
端点=”unix:///var/run/docker.sock"
domain=“aomosk.com”
手表=真的
#这将隐藏所有没有明确定义的docker容器
#将标签设置为“启用”
exposedbydefault=false
~                        

为了更好地使用Traefik,我已经将我的DNS迁移到Cloudflare,并且我有一个设置为我的域名的外部IP记录,但是当我尝试通过子域访问web ui时,仍然会得到服务器未找到页面(当我使用任何其他方法时,404页面未找到)。是否有我遗漏的东西导致web ui无法工作?

我有一个非常类似的设置和问题。我通过注释traefik.toml文件中的日志设置解决了这个问题

logLevel = "DEBUG"
[traefikLog]
  filePath = "/logs/traefik.log"
[accessLog]
  filePath = "/logs/access.log"
如果我把这些放在里面,我会得到404个错误,如果我把它们注释掉,它就会工作。不确定这是不是一个bug

#logLevel = "DEBUG"
#[traefikLog]
#  filePath = "/logs/traefik.log"
#[accessLog]
#  filePath = "/logs/access.log"

我的问题有点不同。我在我的AWS服务器上设置了traefik,起初,它在为HTTP配置时工作。但当我将其配置为HTTPS时,它停止工作。我得到了与此类似的“404后端未找到”错误

reverse-proxy_1  | 202.164.37.34 - - [10/Aug/2018:10:39:17 +0000] "GET /api/providers HTTP/1.1" 302 5 "http://<traefik-subdomain>.<hostname>/dashboard/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36" 1091 "entrypoint redirect for frontend-Host-########-0" "/api/providers" 0ms
reverse-proxy_1  | 202.164.37.34 - - [10/Aug/2018:10:39:17 +0000] "OPTIONS /api/providers HTTP/2.0" 404 19 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36" 1092 "backend not found" "/api/providers" 0ms
reverse-proxy|1 | 202.164.37.34---[10/Aug/2018:10:39:17+0000]“GET/api/providers HTTP/1.1”3025http://./dashboard/“Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,像Gecko)Chrome/68.0.3440.84 Safari/537.36”1091“前端主机的入口点重定向-######-0”“/api/providers”0ms
反向代理[10/Aug/2018:10:39:17+0000]“OPTIONS/api/providers HTTP/2.0”40419“-”Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,像Gecko)Chrome/68.0.3440.84 Safari/537.36“1092”后端找不到“/api/providers”0ms
我采用了paul taylor在回答中给出的相同方法,对日志进行了注释,结果成功了。这是不幸的,因为日志记录有助于调试任何问题