x-gateway-image: &gateway-image image: ${GATEWAY_IMAGE:-vpn-proxy-gateway:local} build: context: . dockerfile: Dockerfile args: BASE_IMAGE: ${BASE_IMAGE:-debian:bookworm-slim} SINGBOX_VERSION: ${SINGBOX_VERSION:-1.12.13} INSTALL_RUNTIME_DEPS: ${INSTALL_RUNTIME_DEPS:-true} INSTALL_SINGBOX: ${INSTALL_SINGBOX:-true} services: vpn-proxy-dataplane: <<: *gateway-image container_name: vpn-proxy-dataplane network_mode: host cap_add: - NET_ADMIN - NET_RAW env_file: - path: .env required: false environment: APP_COMPONENT: dataplane DATA_DIR: /var/lib/vpn-proxy SING_BOX_CONFIG: /var/lib/vpn-proxy/sing-box-config.json SING_BOX_CACHE: /var/lib/sing-box/cache.db DATAPLANE_SOCKET: /run/vpn-proxy/dataplane.sock volumes: - vpn-proxy-data:/var/lib/vpn-proxy - sing-box-cache:/var/lib/sing-box - vpn-proxy-runtime:/run/vpn-proxy restart: unless-stopped healthcheck: test: ["CMD", "curl", "--unix-socket", "/run/vpn-proxy/dataplane.sock", "-fsS", "http://localhost/status"] interval: 5s timeout: 3s retries: 12 start_period: 5s vpn-proxy-control: <<: *gateway-image container_name: vpn-proxy-gateway env_file: - path: .env required: false environment: APP_COMPONENT: control DATA_DIR: /var/lib/vpn-proxy SING_BOX_CONFIG: /var/lib/vpn-proxy/sing-box-config.json SING_BOX_CACHE: /var/lib/sing-box/cache.db DATAPLANE_SOCKET: /run/vpn-proxy/dataplane.sock ports: - "${PORT:-3456}:${PORT:-3456}" volumes: - vpn-proxy-data:/var/lib/vpn-proxy - vpn-proxy-runtime:/run/vpn-proxy depends_on: vpn-proxy-dataplane: condition: service_healthy restart: unless-stopped healthcheck: test: ["CMD", "curl", "-fsS", "http://127.0.0.1:${PORT:-3456}/api/state"] interval: 30s timeout: 5s retries: 3 start_period: 20s volumes: vpn-proxy-data: sing-box-cache: vpn-proxy-runtime: