Ctrl K
ComunidadGuías…

compose.production.yml

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

Archivo original ↗Preguntar a KiBot
services:
  maskgate:
    build:
      context: .
    image: ${MASKGATE_IMAGE:-maskgate:local}
    init: true
    ports:
      - "${BIND_HOST:-127.0.0.1}:${APP_PORT:-8080}:8080"
    environment:
      APP_ENV: production
      APP_HOST: 0.0.0.0
      APP_PORT: 8080
      ENABLE_DEBUG_ENDPOINTS: "false"
      ENABLE_PLAYGROUND: "false"
      REQUIRE_AUTH: "true"
      MASKGATE_API_KEYS: ${MASKGATE_API_KEYS:?set MASKGATE_API_KEYS}
      TRUSTED_HOSTS: ${TRUSTED_HOSTS:?set TRUSTED_HOSTS}
      LLM_PROVIDER: ${LLM_PROVIDER:-openai}
      LLM_BASE_URL: ${LLM_BASE_URL:?set LLM_BASE_URL}
      LLM_API_KEY: ${LLM_API_KEY:?set LLM_API_KEY}
      LLM_DEFAULT_MODEL: ${LLM_DEFAULT_MODEL:?set LLM_DEFAULT_MODEL}
      DETECTOR_PROFILE: ${DETECTOR_PROFILE:-strict}
      POLICY_V2_FILE: ${POLICY_V2_FILE:-}
      MASKGATE_APPLICATION_ID: ${MASKGATE_APPLICATION_ID:-maskgate}
      MASKGATE_JURISDICTION: ${MASKGATE_JURISDICTION:-unspecified}
      MASKGATE_DEFAULT_PURPOSE: ${MASKGATE_DEFAULT_PURPOSE:-remote_llm_processing}
      RATE_LIMIT_REQUESTS: ${RATE_LIMIT_REQUESTS:-60}
      RATE_LIMIT_WINDOW_SECONDS: ${RATE_LIMIT_WINDOW_SECONDS:-60}
      LOG_LEVEL: ${LOG_LEVEL:-INFO}
    read_only: true
    tmpfs:
      - /tmp:size=256m,mode=1777
    cap_drop:
      - ALL
    security_opt:
      - no-new-privileges:true
    pids_limit: 256
    mem_limit: ${MEMORY_LIMIT:-2g}
    cpus: ${CPU_LIMIT:-2.0}
    healthcheck:
      test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8080/health/live', timeout=3).read()"]
      interval: 30s
      timeout: 5s
      start_period: 15s
      retries: 3
    stop_grace_period: 30s
    restart: unless-stopped