2.3 KiB
2.3 KiB
Деплой MedArchive
Контейнер API (FastAPI) за общим Caddy на Selectel KZ. Read-only поиск работает на
готовой SQLite-базе; приём ZIP через интерфейс (/ingest) дораспаковывает и нормализует
новые прайсы прямо на сервере, поэтому в образ включены тяжёлые зависимости (pdfplumber,
pymupdf, google-genai), а контейнеру нужен ключ Gemini.
Раскладка на сервере
/root/medarchive/— код и данные, монтируется в контейнер как/app:api/,contracts/,etl/— код (правки кода не требуют пересборки образа);web/— статический фронт (его же отдаёт Caddy);data/medarchive.db— собранная база,data/quality_report.json— отчёт сборки;data/dict_emb.npy— кэш эмбеддингов справочника (чтобы догрузка не пересчитывала его);data/reference/dictionary.xlsx— эталонный справочник услуг для нормализации.
/root/med-hackathon/— каталог Caddy:docker-compose.yml,Dockerfile,Caddyfile,site/(презентации) и.envсGEMINI_API_KEY(в публичный репозиторий не попадает).
Шаги
- Залить код и данные в
/root/medarchive/(см. раскладку выше). - Положить
docker-compose.yml,Dockerfile,Caddyfileв/root/med-hackathon/. - Создать
/root/med-hackathon/.env:GEMINI_API_KEY=… - Собрать образ и поднять стек:
cd /root/med-hackathon docker compose build api docker compose up -d - Маршруты Caddy:
/api/*→ контейнер API,/→ фронт,/demoи/day1→ презентации.
Проверка
curl https://med.secondbrain.tools/api/health
curl https://med.secondbrain.tools/api/stats
# приём архива через интерфейс:
curl -X POST https://med.secondbrain.tools/api/ingest -F "file=@archive.zip"