73 lines
2.0 KiB
YAML
73 lines
2.0 KiB
YAML
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:
|