2017-11-19 1 views
1

Mein Ziel ist es, das Traefik-Frontend mit Standardauthentifizierung zu schützen.Warum wird meine traefik.toml-Datei nicht von docker-compose-Konfiguration gelesen?

Ich habe Traefik Version v1.4.3 gebaut am 2017-11-14_11: 14: 24AM in einem Docker Container.

Meine Docker-compose.yml Datei sieht wie folgt aus:

.... 
# Enable web configuration backend 
[web] 
address = ":8080" 
[web.auth.basic] 
usersFile = "/etc/traefik/.htpasswd" 
... 

Aber meine Gewohnheit traefik:

version: "3" 

services: 
    proxy: 
    image: traefik 
    command: --web --docker --docker.domain=docker.localhost --logLevel=DEBUG 
    ports: 
     - "80:80" 
     - "8081:8080" 
    volumes: 
     - /var/run/docker.sock:/var/run/docker.sock 
     - ~/git/traefik/traefik.toml:/etc/traefik/traefik.toml 
     - ~/git/traefik/.htpasswd:/etc/traefik/.htpasswd 

networks: 
    default: 
    external: 
     name: my_nw 

Der Abschnitt für das Web-Frontend in meiner traefik.toml Datei sieht wie folgt aus. Die Toml-Datei scheint von Traefik nicht gelesen/gelesen zu werden - für das Traefik-Frontend ist noch keine Authentifizierung notwendig.

Die Debug-Log-Ausgabe sieht wie folgt aus:

$ docker-compose up 
Starting traefik_proxy_1 
Attaching to traefik_proxy_1 
proxy_1 | time="2017-11-20T07:30:10Z" level=info msg="Using TOML configuration file /etc/traefik/traefik.toml" 
proxy_1 | time="2017-11-20T07:30:10Z" level=info msg="Traefik version v1.4.3 built on 2017-11-14_11:14:24AM" 
proxy_1 | time="2017-11-20T07:30:10Z" level=debug msg="Global configuration loaded {"GraceTimeOut":10000000000,"Debug":false,"CheckNewVersion":true,"AccessLogsFile":"","AccessLog":null,"TraefikLogsFile":"","LogLevel":"DEBUG","EntryPoints":{"http":{"Network":"","Address":":80","TLS":null,"Redirect":null,"Auth":null,"WhitelistSourceRange":null,"Compress":false,"ProxyProtocol":null,"ForwardedHeaders":{"Insecure":true,"TrustedIPs":null}}},"Cluster":null,"Constraints":[],"ACME":null,"DefaultEntryPoints":[],"ProvidersThrottleDuration":2000000000,"MaxIdleConnsPerHost":200,"IdleTimeout":0,"InsecureSkipVerify":false,"RootCAs":null,"Retry":null,"HealthCheck":{"Interval":30000000000},"RespondingTimeouts":null,"ForwardingTimeouts":null,"Docker":{"Watch":true,"Filename":"","Constraints":null,"Trace":false,"DebugLogGeneratedTemplate":false,"Endpoint":"unix:///var/run/docker.sock","Domain":"docker.localhost","TLS":null,"ExposedByDefault":true,"UseBindPortIP":false,"SwarmMode":false},"File":null,"Web":{"Address":":8080","CertFile":"","KeyFile":"","ReadOnly":false,"Statistics":null,"Metrics":null,"Path":"/","Auth":null,"Debug":false,"CurrentConfigurations":null,"Stats":null,"StatsRecorder":null},"Marathon":null,"Consul":null,"ConsulCatalog":null,"Etcd":null,"Zookeeper":null,"Boltdb":null,"Kubernetes":null,"Mesos":null,"Eureka":null,"ECS":null,"Rancher":null,"DynamoDB":null}" 
proxy_1 | time="2017-11-20T07:30:10Z" level=info msg="Preparing server http &{Network: Address::80 TLS:<nil> Redirect:<nil> Auth:<nil> WhitelistSourceRange:[] Compress:false ProxyProtocol:<nil> ForwardedHeaders:0xc420270180} with readTimeout=0s writeTimeout=0s idleTimeout=3m0s" 
proxy_1 | time="2017-11-20T07:30:10Z" level=info msg="Starting provider *docker.Provider {"Watch":true,"Filename":"","Constraints":null,"Trace":false,"DebugLogGeneratedTemplate":false,"Endpoint":"unix:///var/run/docker.sock","Domain":"docker.localhost","TLS":null,"ExposedByDefault":true,"UseBindPortIP":false,"SwarmMode":false}" 
proxy_1 | time="2017-11-20T07:30:10Z" level=info msg="Starting provider *web.Provider {"Address":":8080","CertFile":"","KeyFile":"","ReadOnly":false,"Statistics":null,"Metrics":null,"Path":"/","Auth":null,"Debug":false,"CurrentConfigurations":{},"Stats":{"Uptime":"2017-11-20T07:30:10.282646542Z","Pid":1,"ResponseCounts":{},"TotalResponseCounts":{},"TotalResponseTime":"0001-01-01T00:00:00Z"},"StatsRecorder":null}" 
proxy_1 | time="2017-11-20T07:30:10Z" level=info msg="Starting server on :80" 
proxy_1 | time="2017-11-20T07:30:10Z" level=debug msg="Provider connection established with docker 17.09.0-ce (API 1.32)" 
proxy_1 | time="2017-11-20T07:30:10Z" level=debug msg="Validation of load balancer method for backend backend-proxy-traefik failed: invalid load-balancing method ''. Using default method wrr." 
proxy_1 | time="2017-11-20T07:30:10Z" level=debug msg="Configuration received from provider docker: {"backends":{"backend-proxy-traefik":{"servers":{"server-traefik_proxy_1":{"url":"http://172.19.0.2:80","weight":0}},"loadBalancer":{"method":"wrr"}}},"frontends":{"frontend-Host-proxy-traefik-docker-localhost-0":{"backend":"backend-proxy-traefik","routes":{"route-frontend-Host-proxy-traefik-docker-localhost-0":{"rule":"Host:proxy.traefik.docker.localhost"}},"passHostHeader":true,"priority":0,"basicAuth":[],"headers":{}}}}" 
proxy_1 | time="2017-11-20T07:30:10Z" level=debug msg="Last docker config received more than 2s, OK" 
proxy_1 | time="2017-11-20T07:30:10Z" level=debug msg="Creating frontend frontend-Host-proxy-traefik-docker-localhost-0" 
proxy_1 | time="2017-11-20T07:30:10Z" level=error msg="No entrypoint defined for frontend frontend-Host-proxy-traefik-docker-localhost-0, defaultEntryPoints:[]" 
proxy_1 | time="2017-11-20T07:30:10Z" level=error msg="Skipping frontend frontend-Host-proxy-traefik-docker-localhost-0..." 
proxy_1 | time="2017-11-20T07:30:10Z" level=info msg="Server configuration reloaded on :80" 

ich den Film von hier folgt: http://docs.traefik.io/configuration/backends/web/#authentication

Ich kann nicht sehen, was ist falsch mit meinem Setup.

+0

Sieht rechts auf den ersten Blick zu mir auch. Kannst du die DEBUG-Level-Log-Ausgabe gleich zu Beginn von Traefik teilen? –

+0

ok, ich habe die Protokollausgabe hinzugefügt. Interessant, es gibt zwei Fehlermeldungen, die sich über das Frontend beschweren. Aber das Frontend arbeitet. – Ralph

Antwort

1

Der Grund, warum die Einrichtung meine eigene Frage gezeigt in nicht funktionierte, war der ‚Befehl‘ Eintrag in meinem Docker-compose.yml Datei:

command: --web --docker --docker.domain=docker.localhost --logLevel=DEBUG 

Dieser Befehl überschreiben Sie die [web] und [Docker ] Einstellungen bilden meine Traefik.Toml Datei.

Also wenn Sie Traefik als Docker Container mit Docker-Compose starten, sollte die Docker-Compose.yml Datei nicht! Enthält alle Befehle, wenn Sie eine benutzerdefinierte traefik.toml-Datei bereitstellen. In diesem Szenario sollten alle Einstellungen in der Datei trafik.toml gespeichert werden.

So funktioniert es mit dem folgenden Docker-compose.yml Datei:

version: "3" 

services: 
    proxy: 
    image: traefik 
    ports: 
     - "80:80" 
     - "8080:8080" 
    volumes: 
     - /var/run/docker.sock:/var/run/docker.sock 
     - $PWD/traefik.toml:/etc/traefik/traefik.toml 
     - $PWD/.htpasswd:/etc/traefik/.htpasswd 

networks: 
    default: 
    external: 
     name: my_network 

Nicht, dass die traefik.toml Datei in Containerverzeichnis montiert werden muss/etc/traefik/

Verwandte Themen