services: backend: image: ghcr.io/hillaliy/languard-backend:latest container_name: languard-backend privileged: true network_mode: host environment: SECRET_KEY: change-this-to-a-long-random-secret ALLOWED_HOSTS: 192.168.1.10,languard.local,127.0.0.1 BACKEND_LISTEN_PORT: ${BACKEND_LISTEN_PORT:-8000} DB_PATH: /data/db.sqlite3 LOG_DIRECTORY: /data/logs STATIC_ROOT: /static volumes: - languard_database:/data - languard_static:/static healthcheck: test: ["CMD", "python", "-c", "import os, urllib.request; port = os.environ.get('BACKEND_LISTEN_PORT', '8000'); urllib.request.urlopen(f'http://127.0.0.1:{port}/api/v1/health/', timeout=3).read()"] interval: 10s timeout: 5s retries: 6 start_period: 60s restart: unless-stopped scanner: image: ghcr.io/hillaliy/languard-scheduler:latest container_name: languard-scanner privileged: true network_mode: host command: ["python", "-u", "manage.py", "run_scheduler", "--run-now"] environment: SECRET_KEY: change-this-to-a-long-random-secret ALLOWED_HOSTS: 192.168.1.10,languard.local,127.0.0.1 DB_PATH: /data/db.sqlite3 LOG_DIRECTORY: /data/logs STATIC_ROOT: /static volumes: - languard_database:/data - languard_static:/static - /var/run/docker.sock:/var/run/docker.sock:ro restart: unless-stopped depends_on: backend: condition: service_healthy restart: true frontend: image: ghcr.io/hillaliy/languard-frontend:latest container_name: languard-frontend network_mode: host environment: BACKEND_UPSTREAM: 127.0.0.1:${BACKEND_LISTEN_PORT:-8000} FRONTEND_LISTEN_ADDRESS: :8080 restart: unless-stopped depends_on: backend: condition: service_healthy restart: true volumes: languard_database: languard_static: