docker-compose.yml
Rama main · réplica de lectura del repositorio original.
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