Mon 24 January 2022
Configuring Traefik with Redis
Over a weekend I had a quick play around with the
config provider to traefik, experimenting with reverse
proxies. I'm fairly familiar with the redis-cli
and it's fairly easy to build a redis client in any language
so getting off the grounds is a 10min job at most.
I've always got redis container running locally, so I'm sticking with that, to get this running I do:
docker run --name some-redis -p 6379:6379 -d redis
Since I am running traefik on docker-compose and I'll need it to connect to redis, I have to create a network and redis should be connected to this network:
docker network create mynet
docker network connect mynet some-redis
The next step is the compose file for traefik:
# docker-compose.yml
version: '3'
networks:
maunet:
external: true
services:
reverse-proxy:
image: traefik:v2.5
command:
- "--api.insecure=true"
- "--providers.redis"
- "--providers.redis.endpoints=some-redis:6379"
ports:
# HTTP
- "80:80"
# Web UI
- "8080:8080"
networks:
- maunet
And up:
docker-compose up -d
The traefik frontend should be accessible at 127.0.0.1:8080.
Configuration
A few of the traefik concepts didn't make sense at first, but it didn't take long to understand what they're talking about.
-
I have another container running a simple rest server, it's serving on port 3000 which is exposed at port 53782 this container is called
'some-server'
. -
A hurdle that took me a while to figure out was to also connect this container to the network we have traefik and redis running on:
docker network connect mynet some-server
- I need to tell traefik a service (server) exists:
set traefik/http/services/<service-name>/loadbalancer/servers/0/url "http://some-server:3000"
- Now assign this service to a router:
set traefik/http/routers/newroute/service some-server
- Lastly give the router a rule: (Note those are backticks around the forward slash.)
set traefik/http/routers/newroute/rule "Path(`/`)"
Now hitting 127.0.0.1:80 will forward the request to your server. You can also do all the other interesting things that traefik provides like loadbalancing and stripping path prefixes.
References
- https://doc.traefik.io/traefik/routing/providers/kv/