Traefik with Docker Compose Example
Traefik has a bit of a learning curve, and it might be kind of hard to justify for personal projects where virtual hosts are simpler. But it's still fun to tinker with. It took quite a bit of tinkering to get routing for correct for my YEAHBOI guide. Here's a purely docker-compose based example.
version: '3.1'
services:
traefik:
image: traefik:latest
command: --providers.docker --api.dashboard=true
ports:
- "80:80"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
labels:
- "traefik.enable=true"
- "traefik.http.routers.to-traefik.rule=Host(`traefik.example.com`)"
- "traefik.http.routers.to-traefik.service=api@internal"
- "traefik.http.middlewares.test-auth.basicauth.users=myusername:$$apa1$$kFilpK3H$$CaLljM7uHiE0BQ9pCy7oK0"
- "traefik.http.routers.to-traefik.middlewares=test-auth@docker"
project1:
image: project1:1.0
labels:
- "traefik.enable=true"
- "traefik.http.routers.to-project1.service=project1"
- "traefik.http.routers.to-project1.rule=Host(`project1.example.com`)"
- "traefik.http.services.project1.loadbalancer.server.port=80"
project2:
image: project2:1.0
labels:
- "traefik.enable=true"
- "traefik.http.routers.to-project2.service=project2"
- "traefik.http.routers.to-project2.rule=Host(`project2.example.com`)"
- "traefik.http.services.project2.loadbalancer.server.port=80"
Getting random Bad Gateway responses?
I started getting random Bad Gateway responses at one point, but it turned out that I misconfigured the traefik
service labels. If you start getting random Bad Gateway responses, triple check that your labels are correct and accurate.