# mappa — единый meta-сервис цеха (решения 1, 6, 17 спеки) # Прод: VDS рядом с общей БД (postgres:16, отдельная база mappa, свой role — решение 1). # HTTP-ядро + MCP-адаптер одним контейнером (dist). Endpoint: https://mappa.vds.kzntsv.site # Deploy: Portainer-managed (см. portainer-stack-management-vds). Env через Portainer (не env_file). services: mappa: image: registry.kzntsv.site/mappa:v0.60.0 container_name: mappa restart: unless-stopped mem_limit: 512m networks: - shared-dbs - proxy environment: DATABASE_URL: postgres://mappa:${MAPPA_DB_PASS}@postgres:5432/mappa MAPPA_GITEA_TOKEN: ${MAPPA_GITEA_TOKEN} MAPPA_API_TOKEN: ${MAPPA_API_TOKEN} MAPPA_EXPORT_ENABLED: ${MAPPA_EXPORT_ENABLED} MAPPA_EXPORT_DIR: ${MAPPA_EXPORT_DIR} # embedded sched (task:1651): инфра-джобы vitya (telemetry_aggregate/anomalies); git_index_sync — после task:1691 MAPPA_SCHED_RULES: ${MAPPA_SCHED_RULES} MAPPA_TELEMETRY_ANOMALY_RULES: ${MAPPA_TELEMETRY_ANOMALY_RULES} # per-repo таймаут git_index_sync (task:1288/1754): известные таймауты MoreThenCms/O_C-Phazerville MAPPA_GIT_INDEX_REPO_TIMEOUT_MS: ${MAPPA_GIT_INDEX_REPO_TIMEOUT_MS} # клиентский стек версий (task:2075/2084): latest mappa-setup / min-граница (клиент ниже → 426) # env 10/10; согласовано с mappa: latest=0.2.0, min=0.1.0 (inbox:3372/3380) MAPPA_CLIENT_LATEST: ${MAPPA_CLIENT_LATEST} MAPPA_CLIENT_MIN: ${MAPPA_CLIENT_MIN} # S3-бэкенд blob attachment (task:2123, wiki:3435/3309): MinIO mappa-attachments # декларация обязательна — Portainer env-массив транслирует только её (gotcha v0.55.1) MAPPA_ATTACHMENT_BACKEND: ${MAPPA_ATTACHMENT_BACKEND} MAPPA_S3_ENDPOINT: ${MAPPA_S3_ENDPOINT} MAPPA_S3_BUCKET: ${MAPPA_S3_BUCKET} MAPPA_S3_REGION: ${MAPPA_S3_REGION} MAPPA_S3_ACCESS_KEY: ${MAPPA_S3_ACCESS_KEY} MAPPA_S3_SECRET_KEY: ${MAPPA_S3_SECRET_KEY} # телеметрия → S3 (task:2124): агрегаты jsonl в mappa-telemetry (вместо type=metric) MAPPA_TELEMETRY_BACKEND: ${MAPPA_TELEMETRY_BACKEND} MAPPA_TELEMETRY_S3_BUCKET: ${MAPPA_TELEMETRY_S3_BUCKET} volumes: # git-бэкап (task:1430): каталог экспорта = рабочая копия vds-mappa-backup на хосте - /root/vds-mappa-backup:/backup # MCP-сессии персистентные (task:1680/issue:15, v0.40.1): стор сессий # (/app/data/mcp-sessions.json) переживает редеплой контейнера - /root/vds-mappa-data:/app/data # code-access local-слой (task:2057): bare-репо gitea (git.kzntsv.site, тот же VDS), # ro-маунт на дефолтный MAPPA_GIT_GITEA_ROOT=/data/gitea/repositories (git --git-dir, 0 клонов) - /opt/stacks/gitea/data/git/repositories:/data/gitea/repositories:ro healthcheck: test: ["CMD", "wget", "-q", "-O", "/dev/null", "http://127.0.0.1:8731/health"] interval: 15s timeout: 5s retries: 3 start_period: 10s labels: traefik.enable: "true" traefik.http.routers.mappa.entrypoints: websecure traefik.http.routers.mappa.rule: Host(`mappa.vds.kzntsv.site`) traefik.http.routers.mappa.tls.certresolver: letsEncrypt traefik.http.services.mappa.loadbalancer.server.port: "8731" networks: shared-dbs: external: true proxy: external: true