services: backend: image: backend build: context: . dockerfile: ./Dockerfile.backend environment: - "Database:Url=Host=postgres;Database=postgres;Username=postgres;Password=postgres" - "Database:EnablePooling=true" - "Host=0.0.0.0" - "Port=5000" - "Logging:MetricsPort=5001" restart: unless-stopped ports: - "5006:5000" - "5007:5001" volumes: - ./docker/config.ini:/app/config.ini frontend: image: frontend build: context: ./ dockerfile: ./Foxnouns.Frontend/Dockerfile restart: unless-stopped env_file: ./docker/frontend.env environment: - "PRIVATE_API_HOST=http://rate:5003/api" - "PRIVATE_INTERNAL_API_HOST=http://backend:5000/api" rate: image: rate build: ./rate environment: - "PORT=5003" restart: unless-stopped volumes: - ./docker/proxy-config.json:/app/proxy-config.json postgres: image: docker.io/postgres:16 command: [ "postgres", "-c", "max-connections=1000", "-c", "timezone=Etc/UTC", "-c", "max_wal_size=1GB", "-c", "min_wal_size=80MB", "-c", "shared_buffers=128MB" ] environment: - "POSTGRES_PASSWORD=postgres" restart: unless-stopped volumes: - postgres_data:/var/lib/postgresql/data caddy: image: docker.io/caddy:2 restart: unless-stopped ports: - "5004:80" - "5005:81" volumes: - ./docker/Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data - caddy_config:/config volumes: caddy_data: caddy_config: postgres_data: