Traefik v2.x file provider funktioniert nicht für „directory“

Von | Januar 25, 2022

Ich habe versucht neben der Middleware noch weitere Dateien für die Dynamische Konfiguration zu nutzen. Dafür ist der File-Provider gedacht, der entweder auf eine Datei zur dynamischen Konfiguration zeigen kann oder auf ein Verzeichnis in dem dann alle enthaltenen Dateien die dynamische Konfiguration darstellen (Wie es hier in der Traefik Dokumentation steht).

Das hat bei mir aber nicht funktioniert. In der traefik.yml hatte ich ursprünglich dies stehen:

providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    network: web
    exposedByDefault: false
  file:
    filename: /middleware.yml
    watch: true

Dies habe ich dann so abgeändert.

providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    network: web
    exposedByDefault: false
  file:
    directory: /dynamic/
    watch: true

und die Datei middleware.yml in das Verzeichnis /dynamic verschoben. Leider hat das nicht funktioniert, im Log von Traefik hieß es, dass die Einträge nicht gefunden werden können.

Leider kann man in Traefik die meissten Sachen auf ganz unterschiedlichen Wegen einrichten und eine durchgängige Beispielkonfiguration wird in der Dokumentation nirgends gegeben, so dass es eine ganze Weile gedauert hat bis ich auf die Ursache geschubst worden bin.

Damit das Verzeichnis für die dynamische Konfiguration verwendet werden kann muss es erstmal innerhalb des Docker Containers bekannt sein.

Es ist also wichtig, dass in der docker-compose.yml Datei das Verzeichnis eingebunden wird.

### Traefik v2.1
### docker-compose.yml
##START
version: '3'
services:
  traefik:
    image: traefik:v2.5
    container_name: traefik-v2
    restart: always
    networks:
      - web
    ports:
      - 80:80
      - 443:443
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./data/traefik.yml:/traefik.yml:ro
      - ./data/dynamic:/dynamic:ro
      - ./data/.htpasswd:/.htpasswd:ro
      - ./data/acme.json:/acme.json
      - ./data/ssl:/etc/ssl-proris
      - /var/log/traefik.log:/traefik.log

Wichtig ist hier die Zeile – ./data/dynamic:/dynamic:ro Hier wird das Verzeichnis eingebunden und im Traefik Container als Verzeichnis /dynamic bereitgestellt. Erst dadurch kann es im File-Provider genutzt werden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert