The above results in a "404 page not found". I'm certain the path to the file is correct, and I've restarted all containers. Anyone have any idea what's going on?
Thanks to shot for a push in the right direction. Had my own moment working this out as well. Gotta make that bind mount available to the traefik container rather than the container requiring the middleware.
version: '3'
services:
whoami:
image: "traefik/whoami"
container_name: "whoami"
labels:
- "traefik.http.routers.whoami.rule=Host(`whoami.docker1`)"
whoami-a:
image: "traefik/whoami"
container_name: "whoami-a"
labels:
- "traefik.http.routers.whoami-a.rule=Host(`whoami-a.docker1`)"
# define the middleware "whoami-users"
- "traefik.http.middlewares.whoami-users.basicauth.users=test:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/,test2:$$apr1$$d9hr9HBB$$4HxwgUir3HP4EsggP/QNo0"
# tell router to use a middleware named "whoami-users"
- "traefik.http.routers.whoami-a.middlewares=whoami-users"
whoami-b:
image: "traefik/whoami"
container_name: "whoami-b"
# this doesn't work here
#volumes:
# - "./usersfile.txt:/usersfile.txt:ro"
labels:
- "traefik.http.services.whoami-b.loadbalancer.server.port=80"
- "traefik.http.routers.whoami-b.rule=Host(`whoami-b.docker1`)"
# the bind mount for this file needs to be in the *traefik* container
# define the middleware "whoami-usersfile"
- "traefik.http.middlewares.whoami-usersfile.basicauth.usersfile=/whoami-usersfile.txt"
# tell router to use a middleware named "whoami-usersfile"
- "traefik.http.routers.whoami-b.middlewares=whoami-usersfile"
traefik:
image: traefik:v2.8.3
command:
- "--api.insecure=true"
- "--providers.docker"
- "--log.level=DEBUG"
- "--entryPoints.http.address=:80"
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- "/home/fred/projects/whoami-b/usersfile.txt:/whoami-usersfile.txt:ro"
labels:
- "traefik.http.routers.traefik-dashboard.rule=Host(`traefik.docker1`)"
- "traefik.http.services.traefik-dashboard.loadbalancer.server.port=8080"