services: web: build: context: . dockerfile: Dockerfile container_name: nsct-web restart: unless-stopped ports: - "3000:3000" networks: - nsct-network healthcheck: test: ["CMD", "wget", "-qO-", "http://localhost:3000/health"] interval: 30s timeout: 5s retries: 3 start_period: 10s deploy: resources: limits: memory: 512M cpus: '1.0' reservations: memory: 128M cpus: '0.25' caddy: image: caddy:2.8-alpine container_name: nsct-caddy restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data - caddy_config:/config environment: - CADDY_DOMAIN=${CADDY_DOMAIN:-} - NSCT_RATE_LIMIT=${NSCT_RATE_LIMIT:-} - NSCT_API_UPSTREAM=${NSCT_API_UPSTREAM:-host.docker.internal:8080} extra_hosts: - "host.docker.internal:host-gateway" networks: - nsct-network depends_on: - web healthcheck: test: ["CMD", "wget", "-qO-", "http://localhost/health"] interval: 30s timeout: 5s retries: 3 start_period: 10s deploy: resources: limits: memory: 256M cpus: '0.5' reservations: memory: 64M cpus: '0.1' networks: nsct-network: driver: bridge volumes: caddy_data: caddy_config: