# Kubernetes converter input: kubernetes/compose.yaml (see its README). # Complete Docker Hub installation; no source checkout or build required. name: nsx-security-analyzer services: db: image: postgres:17-alpine restart: unless-stopped environment: POSTGRES_DB: ${POSTGRES_DB:-nsx} POSTGRES_USER: ${POSTGRES_USER:-nsx} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env} volumes: - postgres-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U \"$$POSTGRES_USER\" -d \"$$POSTGRES_DB\""] interval: 5s timeout: 5s retries: 20 migrate: image: vkernel/nsx-security-analyzer:${NSX_IMAGE_TAG:-0.5.2} init: true environment: DJANGO_SECRET_KEY: ${DJANGO_SECRET_KEY:?Set DJANGO_SECRET_KEY in .env} DJANGO_ALLOWED_HOSTS: ${DJANGO_ALLOWED_HOSTS:-localhost,127.0.0.1,[::1]} DJANGO_CSRF_TRUSTED_ORIGINS: ${DJANGO_CSRF_TRUSTED_ORIGINS:-} DJANGO_HTTPS: ${DJANGO_HTTPS:-0} DJANGO_TRUST_PROXY: ${DJANGO_TRUST_PROXY:-0} POSTGRES_DB: ${POSTGRES_DB:-nsx} POSTGRES_USER: ${POSTGRES_USER:-nsx} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env} POSTGRES_HOST: ${POSTGRES_HOST:-db} POSTGRES_PORT: ${POSTGRES_PORT:-5432} POSTGRES_SSLMODE: ${POSTGRES_SSLMODE:-prefer} POSTGRES_SSLROOTCERT: ${POSTGRES_SSLROOTCERT:-} POSTGRES_CONNECT_TIMEOUT: ${POSTGRES_CONNECT_TIMEOUT:-10} NSX_AUDIT_TIMEOUT: ${NSX_AUDIT_TIMEOUT:-3600} NSX_LOG_FORMAT: ${NSX_LOG_FORMAT:-json} NSX_AUDIT_LOG_RETENTION_DAYS: ${NSX_AUDIT_LOG_RETENTION_DAYS:-0} command: ["python", "manage.py", "migrate", "--noinput"] depends_on: db: condition: service_healthy web: image: vkernel/nsx-security-analyzer:${NSX_IMAGE_TAG:-0.5.2} init: true environment: DJANGO_SECRET_KEY: ${DJANGO_SECRET_KEY:?Set DJANGO_SECRET_KEY in .env} DJANGO_ALLOWED_HOSTS: ${DJANGO_ALLOWED_HOSTS:-localhost,127.0.0.1,[::1]} DJANGO_CSRF_TRUSTED_ORIGINS: ${DJANGO_CSRF_TRUSTED_ORIGINS:-} DJANGO_HTTPS: ${DJANGO_HTTPS:-0} DJANGO_TRUST_PROXY: ${DJANGO_TRUST_PROXY:-0} POSTGRES_DB: ${POSTGRES_DB:-nsx} POSTGRES_USER: ${POSTGRES_USER:-nsx} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env} POSTGRES_HOST: ${POSTGRES_HOST:-db} POSTGRES_PORT: ${POSTGRES_PORT:-5432} POSTGRES_SSLMODE: ${POSTGRES_SSLMODE:-prefer} POSTGRES_SSLROOTCERT: ${POSTGRES_SSLROOTCERT:-} POSTGRES_CONNECT_TIMEOUT: ${POSTGRES_CONNECT_TIMEOUT:-10} NSX_AUDIT_TIMEOUT: ${NSX_AUDIT_TIMEOUT:-3600} NSX_LOG_FORMAT: ${NSX_LOG_FORMAT:-json} NSX_AUDIT_LOG_RETENTION_DAYS: ${NSX_AUDIT_LOG_RETENTION_DAYS:-0} restart: unless-stopped ports: - "127.0.0.1:${WEB_PORT:-8000}:8000" depends_on: migrate: condition: service_completed_successfully healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/health/', timeout=4)"] interval: 30s timeout: 5s retries: 3 worker: image: vkernel/nsx-security-analyzer:${NSX_IMAGE_TAG:-0.5.2} init: true environment: DJANGO_SECRET_KEY: ${DJANGO_SECRET_KEY:?Set DJANGO_SECRET_KEY in .env} DJANGO_ALLOWED_HOSTS: ${DJANGO_ALLOWED_HOSTS:-localhost,127.0.0.1,[::1]} DJANGO_CSRF_TRUSTED_ORIGINS: ${DJANGO_CSRF_TRUSTED_ORIGINS:-} DJANGO_HTTPS: ${DJANGO_HTTPS:-0} DJANGO_TRUST_PROXY: ${DJANGO_TRUST_PROXY:-0} POSTGRES_DB: ${POSTGRES_DB:-nsx} POSTGRES_USER: ${POSTGRES_USER:-nsx} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env} POSTGRES_HOST: ${POSTGRES_HOST:-db} POSTGRES_PORT: ${POSTGRES_PORT:-5432} POSTGRES_SSLMODE: ${POSTGRES_SSLMODE:-prefer} POSTGRES_SSLROOTCERT: ${POSTGRES_SSLROOTCERT:-} POSTGRES_CONNECT_TIMEOUT: ${POSTGRES_CONNECT_TIMEOUT:-10} NSX_AUDIT_TIMEOUT: ${NSX_AUDIT_TIMEOUT:-3600} NSX_LOG_FORMAT: ${NSX_LOG_FORMAT:-json} NSX_AUDIT_LOG_RETENTION_DAYS: ${NSX_AUDIT_LOG_RETENTION_DAYS:-0} restart: unless-stopped command: ["python", "manage.py", "audit_worker"] depends_on: migrate: condition: service_completed_successfully scheduler: image: vkernel/nsx-security-analyzer:${NSX_IMAGE_TAG:-0.5.2} init: true environment: DJANGO_SECRET_KEY: ${DJANGO_SECRET_KEY:?Set DJANGO_SECRET_KEY in .env} DJANGO_ALLOWED_HOSTS: ${DJANGO_ALLOWED_HOSTS:-localhost,127.0.0.1,[::1]} DJANGO_CSRF_TRUSTED_ORIGINS: ${DJANGO_CSRF_TRUSTED_ORIGINS:-} DJANGO_HTTPS: ${DJANGO_HTTPS:-0} DJANGO_TRUST_PROXY: ${DJANGO_TRUST_PROXY:-0} POSTGRES_DB: ${POSTGRES_DB:-nsx} POSTGRES_USER: ${POSTGRES_USER:-nsx} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env} POSTGRES_HOST: ${POSTGRES_HOST:-db} POSTGRES_PORT: ${POSTGRES_PORT:-5432} POSTGRES_SSLMODE: ${POSTGRES_SSLMODE:-prefer} POSTGRES_SSLROOTCERT: ${POSTGRES_SSLROOTCERT:-} POSTGRES_CONNECT_TIMEOUT: ${POSTGRES_CONNECT_TIMEOUT:-10} NSX_AUDIT_TIMEOUT: ${NSX_AUDIT_TIMEOUT:-3600} NSX_LOG_FORMAT: ${NSX_LOG_FORMAT:-json} NSX_AUDIT_LOG_RETENTION_DAYS: ${NSX_AUDIT_LOG_RETENTION_DAYS:-0} restart: unless-stopped command: ["python", "manage.py", "sync_scheduler"] depends_on: migrate: condition: service_completed_successfully volumes: postgres-data: