# PyGuardian Docker Compose # Controller + Agent cluster setup version: '3.8' services: pyguardian-controller: build: context: ../.. dockerfile: deployment/docker/Dockerfile target: controller container_name: pyguardian-controller restart: unless-stopped privileged: true network_mode: host volumes: - controller_data:/opt/pyguardian/data - controller_logs:/opt/pyguardian/logs - controller_config:/opt/pyguardian/config - /var/log:/var/log:ro environment: - PYGUARDIAN_MODE=controller - PYGUARDIAN_CONFIG=/opt/pyguardian/config/config.yaml - TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN} - CLUSTER_SECRET=${CLUSTER_SECRET} healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8443/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s pyguardian-agent-1: build: context: ../.. dockerfile: deployment/docker/Dockerfile target: agent container_name: pyguardian-agent-1 restart: unless-stopped privileged: true network_mode: host volumes: - agent1_data:/opt/pyguardian/data - agent1_logs:/opt/pyguardian/logs - agent1_config:/opt/pyguardian/config - /var/log:/var/log:ro environment: - PYGUARDIAN_MODE=agent - CONTROLLER_HOST=localhost - CONTROLLER_PORT=8443 - CLUSTER_SECRET=${CLUSTER_SECRET} depends_on: - pyguardian-controller healthcheck: test: ["CMD", "python", "-c", "import sys; sys.exit(0)"] interval: 60s timeout: 15s retries: 3 start_period: 30s volumes: controller_data: driver: local controller_logs: driver: local controller_config: driver: local agent1_data: driver: local agent1_logs: driver: local agent1_config: driver: local networks: default: name: pyguardian-network