Nginx Proxy saceld docker-compose services

Easiest way to proxy scaled containers

docker-compose.yml

version: '3'

services:
  proxy:
    image: jwilder/nginx-proxy:alpine
    container_name: proxy
    ports:
      - 80:80
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
    logging:
      driver: none

  whoami:
    image: jwilder/whoami
    ports:
      - 8000
    environment:
      VIRTUAL_HOST: localhost

Now if you run:

docker-compose up
docker-compose scale whoami=5

And open localhost in browser, each time you refresh the page you will see different container, and you can still access concrete containers by their own ports

$ curl http://localhost
I'm a9998f9cefbd

$ curl http://localhost
I'm 66d5e9d72b61

$ curl http://localhost
I'm 6bab17a8d614

$ curl http://localhost
I'm 103bac359b56

$ docker ps --format "{{.ID}}: {{.Ports}}" --filter ancestor=jwilder/whoami
a9998f9cefbd: 0.0.0.0:32791->8000/tcp
66d5e9d72b61: 0.0.0.0:32790->8000/tcp
6bab17a8d614: 0.0.0.0:32789->8000/tcp
103bac359b56: 0.0.0.0:32788->8000/tcp
de52272cac61: 0.0.0.0:32787->8000/tcp

$ curl http://localhost:32790
I'm 66d5e9d72b61