services: guarddog-nexus: build: . ports: - "8080:8080" environment: NEXUS_URL: http://nexus:8081 LOG_LEVEL: INFO LOG_SYSLOG_HOST: "" HOST: "0.0.0.0" PORT: "8080" LLM_ENABLED: "${LLM_ENABLED:-0}" LLM_AUTO_ANALYZE: "${LLM_AUTO_ANALYZE:-0}" LLM_API_BASE: "${LLM_API_BASE:-https://api.openai.com/v1}" LLM_API_KEY: "${LLM_API_KEY:-}" LLM_MODEL: "${LLM_MODEL:-gpt-4o-mini}" LLM_TIMEOUT_SECONDS: "${LLM_TIMEOUT_SECONDS:-30}" MAX_CONCURRENT_SCANS: "${MAX_CONCURRENT_SCANS:-4}" WEBHOOK_SECRET: "${WEBHOOK_SECRET:-}" SCAN_TIMEOUT_SECONDS: "${SCAN_TIMEOUT_SECONDS:-300}" volumes: - ./data:/data depends_on: nexus-setup: condition: service_completed_successfully restart: unless-stopped logging: driver: "json-file" options: max-size: "10m" max-file: "3" nexus: image: sonatype/nexus3:3.79.0 ports: - "8081:8081" volumes: - nexus-data:/nexus-data restart: unless-stopped logging: driver: "json-file" options: max-size: "10m" max-file: "3" healthcheck: test: ["CMD", "curl", "-sf", "http://localhost:8081/service/rest/v1/status"] interval: 15s timeout: 5s start_period: 60s retries: 10 nexus-setup: image: alpine:3.21 volumes: - ./scripts/setup-nexus.sh:/setup.sh:ro - nexus-data:/nexus-data:ro environment: NEXUS_URL: http://nexus:8081 ADMIN_PASSWORD: "${NEXUS_PASSWORD:-admin123}" WEBHOOK_URL: http://guarddog-nexus:8080/webhooks/nexus entrypoint: ["/bin/sh", "/setup.sh"] depends_on: - nexus volumes: nexus-data: