version: '3.5' services: button: build: . labels: - "traefik.http.routers.button.rule=Host(`button.localhost`)" - "traefik.http.services.button-service.loadbalancer.server.port=8000" - "traefik.http.middlewares.btn-ratelimit.ratelimit.average=50" - "traefik.http.middlewares.btn-ratelimit.ratelimit.burst=10" - "traefik.http.routers.button.middlewares=btn-ratelimit@docker" volumes: - ./manage.py:/app/manage.py - ./config:/app/config - ./api:/app/api environment: - DEBUG=True - SECRET_KEY=secret - ALLOWED_HOSTS=button.localhost - DJANGO_SUPERUSER_PASSWORD=django postgres: image: postgres:12 volumes: - data:/var/lib/postgresql/data environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres ports: - 5432:5432 pgadmin: image: dpage/pgadmin4:4 labels: - "traefik.http.routers.pgadmin.rule=Host(`pgadmin.localhost`)" - "traefik.http.services.pgadmin-service.loadbalancer.server.port=80" volumes: - pgadmin:/var/lib/pgadmin environment: PGADMIN_DEFAULT_EMAIL: postgres PGADMIN_DEFAULT_PASSWORD: postgres traefik: image: traefik:v2.2 labels: - "traefik.http.routers.traefik.rule=Host(`traefik.localhost`)" - "traefik.http.services.traefik-service.loadbalancer.server.port=8080" command: --api.insecure=true --providers.docker --log.level=ERROR --accesslog=true ports: - 80:80 volumes: - /var/run/docker.sock:/var/run/docker.sock volumes: data: pgadmin: