This repo contains two trivial microservices: microservice/
and microservice2
. They both return "hello world" as JSON answer microservice2
also logs the requestor's Host header and requested URL.
How to build the containers? -> make -images.sh
.
How to run them?
docker-compose up -d
The docker-compose.yml
file shows how to bind the microservices into traefik. Traefik learns about new microservices via labels in the docker-compose.yml
file.
More info at: https://doc.traefik.io/traefik/user-guides/docker-compose/basic-example/
If you take a look at the docker-compose.yml
file, then you will see two different hostname (HTTP Hostname header) specified in the config for the two containers:
- "traefik.http.routers.hello-traefik2.rule=Host(`hello-traefik.localhost`)"
- "traefik.http.routers.hello-traefik2.rule=Host(`hello-traefik2.localhost`)"
Here, hello-traefik.localhost
is the Host header. So, you can query the microservice like this from the outer server, which runs the containers:
curl --header 'Host:hello-traefik.localhost' http://localhost/
curl --header 'Host:hello-traefik2.localhost' http://localhost/
You should see microservice and microservice2's respective answers.