Ctrl K
ComunidadGuías…

docker-compose.yml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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