name: who_need_help_edge services: edge: image: ${CADDY_IMAGE:-who-need-help:caddy-local} build: context: . dockerfile: Dockerfile.caddy user: "1000:1000" environment: PRIMARY_DOMAIN: ${PRIMARY_DOMAIN:?Set PRIMARY_DOMAIN in the edge environment} PRIMARY_UPSTREAM: ${PRIMARY_UPSTREAM:?Set PRIMARY_UPSTREAM in the edge environment} STAGING_DOMAIN: ${STAGING_DOMAIN:?Set STAGING_DOMAIN in the edge environment} STAGING_UPSTREAM: ${STAGING_UPSTREAM:?Set STAGING_UPSTREAM in the edge environment} ports: - "${EDGE_BIND_ADDRESS:-0.0.0.0}:${EDGE_HTTP_PORT:-80}:80" - "${EDGE_BIND_ADDRESS:-0.0.0.0}:${EDGE_HTTPS_PORT:-443}:443" - "${EDGE_BIND_ADDRESS:-0.0.0.0}:${EDGE_HTTPS_PORT:-443}:443/udp" volumes: - ./deploy/caddy/Caddyfile:/etc/caddy/Caddyfile:ro - caddy_data:/data - caddy_config:/config networks: [public_edge] extra_hosts: - "host.docker.internal:host-gateway" read_only: true tmpfs: - /tmp cap_drop: [ALL] cap_add: [NET_BIND_SERVICE] security_opt: - no-new-privileges:true restart: unless-stopped healthcheck: test: ["CMD", "caddy", "validate", "--config", "/etc/caddy/Caddyfile", "--adapter", "caddyfile"] interval: 10s timeout: 3s retries: 5 networks: public_edge: name: ${PUBLIC_EDGE_NETWORK:?Set PUBLIC_EDGE_NETWORK in the edge environment} volumes: caddy_data: caddy_config: