auto-sync: 2026-06-05 07:40:01
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
# Dev Report: ORCH-31 Staging-инфраструктура (порт 8501, изолированная БД)
|
||||
Дата: 2026-06-05
|
||||
Статус: DONE
|
||||
|
||||
## Задача
|
||||
Добавить compose-service `orchestrator-staging` под профилем `staging`, `.env.staging.example`, обновить `.gitignore`, создать `docs/STAGING.md`. Ветка `feature/ORCH-31-staging-infra` из свежего origin/main. Только инфра-обвязка (ORCH-31, этап 1 из 5).
|
||||
|
||||
## Сделано
|
||||
- [x] Подключён к серверу, изучен текущий docker-compose.yml (факты совпали с ТЗ)
|
||||
- [x] Создана ветка `feature/ORCH-31-staging-infra` из свежего origin/main (d0a3424)
|
||||
- [x] Добавлен service `orchestrator-staging` в docker-compose.yml под профилем `staging`
|
||||
- [x] Создан `.env.staging.example` со всеми ключами и комментариями
|
||||
- [x] Обновлён `.gitignore`: добавлены `.env.staging` и `data/staging/`
|
||||
- [x] Создан `docs/STAGING.md`: как поднять, архитектура, роадмап
|
||||
- [x] Проверен `docker compose config` (без профиля — staging НЕ виден)
|
||||
- [x] Проверен `docker compose --profile staging config` (staging виден под профилем)
|
||||
- [x] Коммит `6c1e5ff` + push + PR #28 создан
|
||||
|
||||
## Изменённые файлы
|
||||
- `docker-compose.yml` — добавлен service `orchestrator-staging` (profiles: [staging], port 8501, volume ./data/staging, command override)
|
||||
- `.gitignore` — добавлены `.env.staging` и `data/staging/`
|
||||
- `.env.staging.example` — новый файл, шаблон с ключами и плейсхолдерами
|
||||
- `docs/STAGING.md` — новый файл, документация по staging
|
||||
|
||||
## Результат
|
||||
|
||||
### Ветка
|
||||
`feature/ORCH-31-staging-infra`
|
||||
|
||||
### Коммит
|
||||
`6c1e5fff5291297f6ab1573b144390f36b135cbe`
|
||||
`feat(staging): add isolated orchestrator-staging service (port 8501, separate DB)`
|
||||
|
||||
### PR
|
||||
**#28** — https://git.mva154.duckdns.org/admin/orchestrator/pulls/28
|
||||
|
||||
---
|
||||
|
||||
### Пруф 1: docker compose config (без профиля) — staging НЕ поднимается
|
||||
```
|
||||
services:
|
||||
orchestrator: ← только прод, staging отсутствует ✅
|
||||
```
|
||||
|
||||
### Пруф 2: docker compose --profile staging config — staging виден
|
||||
```
|
||||
services:
|
||||
orchestrator:
|
||||
orchestrator-staging: ← виден под профилем staging ✅
|
||||
profiles:
|
||||
- staging
|
||||
command:
|
||||
- uvicorn
|
||||
- src.main:app
|
||||
- --host
|
||||
- 0.0.0.0
|
||||
- --port
|
||||
- "8501" ← порт 8501 ✅
|
||||
volumes:
|
||||
source: /home/slin/repos/orchestrator/data/staging ← изолированная БД ✅
|
||||
```
|
||||
|
||||
### Пруф 3: git log origin/main..origin/feature/ORCH-31-staging-infra
|
||||
```
|
||||
6c1e5ff feat(staging): add isolated orchestrator-staging service (port 8501, separate DB)
|
||||
```
|
||||
✅ Один коммит поверх main, после push.
|
||||
|
||||
---
|
||||
|
||||
## Архитектура решения
|
||||
|
||||
| | Production | Staging |
|
||||
|---|---|---|
|
||||
| Port | 8500 | 8501 |
|
||||
| Container | `orchestrator` | `orchestrator-staging` |
|
||||
| DB (host) | `./data/orchestrator.db` | `./data/staging/orchestrator.db` |
|
||||
| DB (container) | `/app/data/orchestrator.db` | `/app/data/orchestrator.db` |
|
||||
| env file | `.env` | `.env.staging` |
|
||||
| Profile | *(default)* | `staging` |
|
||||
|
||||
Изоляция БД достигается через отдельный volume mount `./data/staging:/app/data`, а не изменением `ORCH_DB_PATH`.
|
||||
|
||||
## Проблемы и решения
|
||||
|
||||
1. **Нет `.env.staging` для `docker compose config --profile staging`** — ожидаемо (файл создаётся при выкате, не коммитится). Для проверки использован временный `.env.staging` с placeholder-значениями, сразу удалён. В репо не закоммичен.
|
||||
|
||||
2. **Bash heredoc + backticks** в SSH-команде для JSON тела PR — экранирование конфликтовало. Решено через Python-скрипт (`/tmp/pr_payload.json`).
|
||||
|
||||
## Следующий шаг (ORCH-32)
|
||||
Создать изолированный Plane-проект и Gitea-репозиторий для staging, настроить webhook для staging-инстанса (порт 8501).
|
||||
Reference in New Issue
Block a user