services: license-lifecycle: image: license-lifecycle-system:1.2.1 build: context: . dockerfile: Dockerfile ports: - "${APP_PORT:-8080}:8000" environment: - JWT_SECRET=${JWT_SECRET} - DATABASE_URL=${DATABASE_URL:-sqlite+aiosqlite:////data/licenses.db} - STORAGE_PATH=${STORAGE_PATH:-/data/storage} - BACKUP_LOCATION=${BACKUP_LOCATION:-/data/backups} - RESTART_AFTER_RESTORE=${RESTART_AFTER_RESTORE:-true} - CORS_ORIGINS=${CORS_ORIGINS:-http://localhost:8080} - ADMIN_PASSWORD=${ADMIN_PASSWORD} - TOKEN_EXPIRY=${TOKEN_EXPIRY:-1440} - HOST=${HOST:-0.0.0.0} - LOG_LEVEL=${LOG_LEVEL:-INFO} - EXPOSE_API_DOCS=${EXPOSE_API_DOCS:-false} - STRICT_REQUEST_FIELDS=${STRICT_REQUEST_FIELDS:-false} - OIDC_STATE_SECRET=${OIDC_STATE_SECRET:-} - ALLOW_HTTP_OIDC_DISCOVERY=${ALLOW_HTTP_OIDC_DISCOVERY:-false} - ALLOW_PRIVATE_OIDC_DISCOVERY=${ALLOW_PRIVATE_OIDC_DISCOVERY:-false} - SESSION_COOKIE_NAME=${SESSION_COOKIE_NAME:-license_lifecycle_session} - SESSION_COOKIE_SECURE=${SESSION_COOKIE_SECURE:-false} - FORWARDED_ALLOW_IPS=${FORWARDED_ALLOW_IPS:-127.0.0.1} - MAX_UPLOAD_SIZE_MB=${MAX_UPLOAD_SIZE_MB:-20} - ALLOWED_UPLOAD_EXTENSIONS=${ALLOWED_UPLOAD_EXTENSIONS:-.pdf,.png,.jpg,.jpeg,.xlsx,.xls,.csv,.txt,.docx,.lic,.msg} - MAX_PLUGIN_PACKAGE_SIZE_MB=${MAX_PLUGIN_PACKAGE_SIZE_MB:-50} - PLUGIN_STORAGE_PATH=${PLUGIN_STORAGE_PATH:-/data/plugins} - PLUGIN_HOST_BASE_URL=${PLUGIN_HOST_BASE_URL:-http://127.0.0.1:8000} - PLUGIN_HOST_ENABLED=${PLUGIN_HOST_ENABLED:-false} - PLUGIN_HOST_DEVELOPER_MODE=${PLUGIN_HOST_DEVELOPER_MODE:-false} - OFFICIAL_EXTENSION_PUBLIC_KEYS=${OFFICIAL_EXTENSION_PUBLIC_KEYS:-[]} - PLUGIN_RUNTIME_LOG_MAX_BYTES=${PLUGIN_RUNTIME_LOG_MAX_BYTES:-65536} - MAX_PLUGIN_DOCUMENT_SIZE_MB=${MAX_PLUGIN_DOCUMENT_SIZE_MB:-10} volumes: - license_lifecycle_data:/data restart: unless-stopped security_opt: - no-new-privileges:true logging: driver: "json-file" options: max-size: "10m" max-file: "5" healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/api/health')"] interval: 30s timeout: 10s retries: 3 start_period: 15s volumes: license_lifecycle_data: driver: local