name: repopulse services: backend: build: context: . dockerfile: backend/Dockerfile container_name: repopulse-backend restart: unless-stopped environment: REPOPULSE_SCAN_ROOT: /scan REPOPULSE_DB: /data/repopulse.db REPOPULSE_MAX_CONCURRENT_SCANS: "${REPOPULSE_MAX_CONCURRENT_SCANS:-1}" REPOPULSE_JOB_LEASE_SECONDS: "${REPOPULSE_JOB_LEASE_SECONDS:-900}" REPOPULSE_SCAN_MAX_FILES: "${REPOPULSE_SCAN_MAX_FILES:-10000}" REPOPULSE_SCAN_MAX_TEXT_BYTES: "${REPOPULSE_SCAN_MAX_TEXT_BYTES:-2000000}" REPOPULSE_SCAN_MAX_TOTAL_TEXT_BYTES: "${REPOPULSE_SCAN_MAX_TOTAL_TEXT_BYTES:-50000000}" REPOPULSE_SCAN_MAX_FINDINGS: "${REPOPULSE_SCAN_MAX_FINDINGS:-2000}" REPOPULSE_SCAN_MAX_SECRET_FINDINGS: "${REPOPULSE_SCAN_MAX_SECRET_FINDINGS:-20}" REPOPULSE_GITEA_URL: "${REPOPULSE_GITEA_URL:-}" REPOPULSE_GITEA_TOKEN: "${REPOPULSE_GITEA_TOKEN:-}" REPOPULSE_GITEA_BRANCH_WORKERS: "${REPOPULSE_GITEA_BRANCH_WORKERS:-4}" REPOPULSE_GITEA_WEBHOOK_SECRET: "${REPOPULSE_GITEA_WEBHOOK_SECRET:-}" REPOPULSE_GITEA_SYNC_INTERVAL_SECONDS: "${REPOPULSE_GITEA_SYNC_INTERVAL_SECONDS:-300}" REPOPULSE_REPOSITORY_CACHE: /data/repos REPOPULSE_MAX_QUEUED_SCANS: "${REPOPULSE_MAX_QUEUED_SCANS:-100}" REPOPULSE_HISTORY_PER_REPOSITORY: "${REPOPULSE_HISTORY_PER_REPOSITORY:-200}" REPOPULSE_FULL_REPORTS_PER_REPOSITORY: "${REPOPULSE_FULL_REPORTS_PER_REPOSITORY:-30}" REPOPULSE_REPORT_RETENTION_DAYS: "${REPOPULSE_REPORT_RETENTION_DAYS:-365}" REPOPULSE_OPERATOR_TOKEN: "${REPOPULSE_OPERATOR_TOKEN:-}" volumes: - "${REPOPULSE_DATA_ROOT:-repopulse_data}:/data" - "${REPOPULSE_SOURCE_ROOT:-..}:/scan:ro" healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/health', timeout=3).read()"] interval: 20s timeout: 5s start_period: 10s retries: 5 labels: net.unraid.docker.managed: "dockerman" security_opt: - no-new-privileges:true logging: driver: json-file options: max-size: "20m" max-file: "3" frontend: build: context: . dockerfile: frontend/Dockerfile container_name: repopulse restart: unless-stopped depends_on: backend: condition: service_healthy ports: - "${REPOPULSE_PORT:-1254}:80" healthcheck: test: ["CMD-SHELL", "wget -qO- http://127.0.0.1/health >/dev/null || exit 1"] interval: 20s timeout: 5s start_period: 10s retries: 5 labels: net.unraid.docker.managed: "dockerman" net.unraid.docker.webui: "http://127.0.0.1:${REPOPULSE_PORT:-1254}" security_opt: - no-new-privileges:true logging: driver: json-file options: max-size: "20m" max-file: "3" volumes: repopulse_data: name: repopulse_data