71 lines
3.9 KiB
YAML
71 lines
3.9 KiB
YAML
# 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.63.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}
|
||
# per-host креды git-провайдера (issue:30 creds-layer, task:2569): kreknin gitea
|
||
# JSON {host: {url, token}}; дефолт-креды (kzntsv) — MAPPA_GITEA_TOKEN выше
|
||
MAPPA_GIT_GITEA_HOSTS: ${MAPPA_GIT_GITEA_HOSTS}
|
||
# телеметрия → 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
|