version: '3.8' services: app: build: . container_name: waiting_app restart: always environment: - DATABASE_URL=postgresql://user:password@db:5432/waiting_db - REDIS_URL=redis://redis:6379/0 # Add other ENV vars here depends_on: - db - redis volumes: - ./static:/app/static # Share static files for local dev if needed, or for Nginx to access if shared volume networks: - waiting_network db: image: postgres:15-alpine container_name: waiting_db restart: always environment: - POSTGRES_USER=user - POSTGRES_PASSWORD=password - POSTGRES_DB=waiting_db volumes: - postgres_data:/var/lib/postgresql/data networks: - waiting_network # performance tuning command: postgres -c 'max_connections=500' -c 'shared_buffers=256MB' redis: image: redis:7-alpine container_name: waiting_redis restart: always networks: - waiting_network nginx: image: nginx:alpine container_name: waiting_nginx restart: always ports: - "80:80" volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro - ./static:/app/static:ro # Mount static files so Nginx can serve them directly depends_on: - app networks: - waiting_network networks: waiting_network: driver: bridge volumes: postgres_data: