# start with 3 workers
docker compose up -d --scale worker=3
# verify that nginx and 3 workers are runing
docker compose ps
# requests are distributed accross the workers
curl -s 127.0.0.1:80/api | jq '.ip'
# cleanup
docker compose down
This will produce the following output
$ docker compose up -d --scale worker=3; docker compose ps; curl -s 127.0.0.1:80/api | jq '.ip'; curl -s 127.0.0.1:80/api | jq '.ip'; curl -s 127.0.0.1:80/api | jq '.ip'; docker compose down
[+] Running 5/5
✔ Network docker-compose-scale-test_default Created 0.1s
✔ Container docker-compose-scale-test-nginx-master-1 Started 0.2s
✔ Container docker-compose-scale-test-worker-3 Started 0.3s
✔ Container docker-compose-scale-test-worker-1 Started 0.2s
✔ Container docker-compose-scale-test-worker-2 Started 0.4s
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
docker-compose-scale-test-nginx-master-1 nginx:latest "/docker-entrypoint.…" nginx-master 1 second ago Up Less than a second 127.0.0.1:80->80/tcp
docker-compose-scale-test-worker-1 traefik/whoami:latest "/whoami" worker 1 second ago Up Less than a second 80/tcp
docker-compose-scale-test-worker-2 traefik/whoami:latest "/whoami" worker 1 second ago Up Less than a second 80/tcp
docker-compose-scale-test-worker-3 traefik/whoami:latest "/whoami" worker 1 second ago Up Less than a second 80/tcp
[
"127.0.0.1",
"::1",
"192.168.97.4"
]
[
"127.0.0.1",
"::1",
"192.168.97.3"
]
[
"127.0.0.1",
"::1",
"192.168.97.4"
]
[+] Running 5/5
✔ Container docker-compose-scale-test-worker-2 Removed 0.1s
✔ Container docker-compose-scale-test-worker-1 Removed 0.1s
✔ Container docker-compose-scale-test-worker-3 Removed 0.1s
✔ Container docker-compose-scale-test-nginx-master-1 Removed 0.2s
✔ Network docker-compose-scale-test_default Removed