
Traefik ist ein Reverse Proxy. In Kombination mit Docker kann dieser benutzt werden, um Anfragen von außen je nach Domain bzw. URL an einzelne Docker-Container weiterzuleiten. Zusätzlich lassen sich mit Traefik auch automatisch Let’s Encrypt-Zertifikate erstellen.
Inhaltsverzeichnis
Konfigurationsdatei erstellen
Traefik ist als Docker-Image verfügbar. Zunächst erstellen wir in unserem lokalen Arbeitsverzeichnis ein Unterverzeichnis mit dem Namen traefik. In diesem legen wir eine Datei traefik.yml an, mit der wir den Reverse Proxy konfigurieren:
entryPoints:
web:
address: ":80"
web-secure:
address: ":443"
providers:
docker:
defaultRule: "Host(`{{ trimPrefix `/` .Name }}.docker.localhost`)"
api:
insecure: true
Es sind hier zwei Einsprungpunkte definiert (für HTTP und HTTPS). Die Default-Rule definiert, unter welcher Domain Container erreichbar sind, sofern für diese keine abweichende Regel angegeben wird.
Dockerfile erstellen
Als nächstes legen wir im Unterverzeichnis traefik ein Dockerfile an:
FROM traefik:v2.2
ADD traefik.yml /etc/traefik/traefik.yml
Docker Composer File
Nun benötigen wir noch eine Docker Compose Datei. Diese legen wir im Hauptverzeichnis an:
version: "3.7"
services:
traefik:
build:
context: traefik
restart: always
ports:
- 80:80
- 443:443
- 8080:8080
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
labels:
- "traefik.enable=false"
Nun können wir den Traefik Proxy mit docker-compose up -d
deployen. Unter http://localhost:8080/ lässt sich das Dashboard von Traefik aufrufen.
Nun fügen wir zum Test des Proxies noch einen weiteren Docker Container hinzu:
whoami:
image: "containous/whoami"
labels:
- "traefik.enable=true"
- "traefik.http.routers.whoami.rule=Host(`whoami.localhost`)"
- "traefik.http.routers.whoami.entrypoints=web"
Dieser ist nun, wenn wir erneut deployen, unter http://whoami.localhost erreichbar.
Automatisiert Let’s Enrypt Zertifikate erstellen
Zu guter Letzt erstellen wir einen NGINX Container und machen diesen per HTTPS verfügbar:
web:
image: nginx
labels:
- "traefik.enable=true"
- "traefik.http.routers.nginx.rule=Host(`nginx.localhost`)"
- "traefik.http.routers.nginx.entrypoints=web-secure"
- "traefik.http.routers.nginx.tls=true"
- "traefik.http.routers.nginx.tls.certresolver=le"
Wir erreichen den NGINX Server nun unter https://nginx.localhost/.
Wird statt localhost eine extern erreichbare Domain verwendet, so wird ein Let’s Encrypt Zertifikat generiert und später bei Ablauf automatisch aktualisiert.
Fazit
Traefik bietet eine einfache Möglichkeit, um eingehenden HTTP-Traefik dynamisch an Docker-Container weiterzurouten und kümmert sich zudem um die automatische Erzeugung von SSL-Zertifikaten.
Wenn Du wissen willst, wie Du Docker auf Deinem Server einrichten kannst und noch weiteres Potential identifizieren willst, wie Du deine Routinearbeiten minimieren kannst, melde dich jetzt zum Newsletter an und verpasse nichts mehr.