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.