services: backend: image: ghcr.io/nonetss/komodo-cd-backend:latest init: true restart: unless-stopped volumes: - db_data:/data environment: DATABASE_URL: "file:/data/db.sqlite" BETTER_AUTH_URL: "${APP_URL:?APP_URL is required}" BETTER_AUTH_SECRET: "${BETTER_AUTH_SECRET:?BETTER_AUTH_SECRET is required}" SEED_ADMIN_EMAIL: "${SEED_ADMIN_EMAIL:-admin@example.com}" SEED_ADMIN_NAME: "${SEED_ADMIN_NAME:-Admin}" SEED_ADMIN_PASSWORD: "${SEED_ADMIN_PASSWORD:?SEED_ADMIN_PASSWORD is required}" TRIVY_SERVER_URL: "${TRIVY_SERVER_URL:-http://trivy:4954}" TRIVY_RESCAN_INTERVAL_HOURS: "${TRIVY_RESCAN_INTERVAL_HOURS:-24}" healthcheck: test: ["CMD", "bun", "-e", "fetch('http://localhost:3000/health-check').then((r) => process.exit(r.ok ? 0 : 1), () => process.exit(1))"] interval: 10s timeout: 5s retries: 5 start_period: 15s networks: - komodo_net frontend: image: ghcr.io/nonetss/komodo-cd-frontend:latest init: true restart: unless-stopped environment: BACKEND_URL: "http://backend:3000" healthcheck: test: ["CMD", "bun", "-e", "fetch('http://localhost:4321/login').then((r) => process.exit(r.ok ? 0 : 1), () => process.exit(1))"] interval: 10s timeout: 5s retries: 5 start_period: 15s depends_on: backend: condition: service_healthy networks: - komodo_net gateway: image: ghcr.io/nonetss/komodo-cd-gateway:latest init: true restart: unless-stopped ports: - "${PORT:-80}:80" healthcheck: test: ["CMD", "wget", "-q", "--spider", "http://localhost/health"] interval: 10s timeout: 5s retries: 5 start_period: 5s depends_on: backend: condition: service_healthy frontend: condition: service_healthy networks: - komodo_net # Servidor de Trivy para la pestaña Seguridad: guarda la base de datos de # vulnerabilidades (la descarga de Internet al arrancar y la mantiene al # día) y el backend le manda los escaneos con el cliente `trivy`. Misma # versión que TRIVY_VERSION en apps/backend/Dockerfile. El backend no lo # espera: sin él, solo fallan los escaneos. trivy: image: aquasec/trivy:0.75.0 init: true restart: unless-stopped command: ["server", "--listen", "0.0.0.0:4954", "--cache-dir", "/var/lib/trivy"] volumes: - trivy_cache:/var/lib/trivy healthcheck: test: ["CMD", "wget", "-q", "--spider", "http://localhost:4954/healthz"] interval: 10s timeout: 5s retries: 5 # La primera vez descarga la base de datos antes de escuchar start_period: 120s networks: - komodo_net networks: komodo_net: volumes: db_data: trivy_cache: