This post is mostly for myself: I find the Traefik documentation hard to navigate, so having figured this out in response to a question on Stack Overflow, I’m putting it here to help it stick in my head.
The question asks essentially how to perform port-based routing of requests to containers, so that a request for http://example.com
goes to one container while a request for http://example.com:9090
goes to a different container.
Creating entrypoints
A default Traefik configuration will already have a listener on port 80, but if we want to accept connections on port 9090 we need to create a new listener: what Traefik calls an entrypoint. We do this using the --entrypoints.<name>.address
option. For example, --entrypoints.ep1.address=80
creates an entrypoint named ep1
on port 80, while --entrypoints.ep2.address=9090
creates an entrypoint named ep2
on port 9090. Those names are important because we’ll use them for mapping containers to the appropriate listener later on.