services: web: build: context: . dockerfile: Dockerfile container_name: nsct-web restart: unless-stopped environment: - NSCT_API_BASE_URL=http://nsct-api:8080 - DEFAULT_THEME=dark 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:-} 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: