docs: README — точный список трейсбэков при старте, ожидание healthy, имена env, .env.test для migration-cycle
I-1: предупреждение dev-эмитента появляется при первом запросе к /me, а не при старте. I-2: добавлен трейсбэк SMB (заглушка). S3-трейсбэк помечен «до исправления в задаче 22». M-3: дождаться healthy перед make migrate. M-5: таблица env с полными именами OPENBAO__MINIO__*, __NATS__*, __SMB__*. M-2: migration-cycle и check-full читают .env.test. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
0c1e1b94b2
commit
f6fa38f9dd
50
README.md
50
README.md
@ -54,10 +54,16 @@ make up # docker compose -f ../docs/dev/docker-compose.yml up -d
|
|||||||
```
|
```
|
||||||
|
|
||||||
`make up` поднимает `postgres` (5432), `nats` (4222, мониторинг 8222), `minio` (9000, консоль 9001) и одноразовый
|
`make up` поднимает `postgres` (5432), `nats` (4222, мониторинг 8222), `minio` (9000, консоль 9001) и одноразовый
|
||||||
`minio-init`, который создаёт бакет `arm-ka` и завершается с кодом 0. Готовность — «healthy» у трёх долгоживущих
|
`minio-init`, который создаёт бакет `arm-ka` и завершается с кодом 0. Команда возвращается сразу, а PostgreSQL становится
|
||||||
сервисов: `docker compose -f ../docs/dev/docker-compose.yml ps`. Для скриптов, которым нужно дождаться готовности:
|
готовым примерно через 6 секунд: **дождитесь `healthy`** у трёх долгоживущих сервисов, прежде чем выполнять `make migrate`:
|
||||||
`docker compose -f ../docs/dev/docker-compose.yml up -d --wait postgres nats minio` (голый `--wait` возвращает код 1
|
|
||||||
из-за завершающегося `minio-init`). Подробности, смена портов, сброс — [`../docs/dev/README.md`](../docs/dev/README.md).
|
```bash
|
||||||
|
docker compose -f ../docs/dev/docker-compose.yml up -d --wait postgres nats minio # возвращается, когда все healthy
|
||||||
|
docker compose -f ../docs/dev/docker-compose.yml ps # проверка статуса
|
||||||
|
```
|
||||||
|
|
||||||
|
(голый `--wait` без списка сервисов возвращает код 1 из-за завершающегося `minio-init`; поэтому `make up` для бакета
|
||||||
|
и `--wait` со списком — вместе). Подробности, смена портов, сброс — [`../docs/dev/README.md`](../docs/dev/README.md).
|
||||||
|
|
||||||
### 3. Настройки приложения
|
### 3. Настройки приложения
|
||||||
|
|
||||||
@ -149,11 +155,22 @@ Dev-пользователи (`api/seed/dev/users.yaml`, создаются `mak
|
|||||||
|
|
||||||
### Что вы увидите в логе при запуске
|
### Что вы увидите в логе при запуске
|
||||||
|
|
||||||
- Предупреждение «Включён dev-эмитент токенов … только для разработки» — штатно (см. «Безопасность dev-режима»).
|
Старт занимает около секунды; в логе два трейсбэка — это ожидаемо в dev, приложение при этом работает:
|
||||||
- Трейсбэк `ClientConnectorSSLError ... localhost:9000` при проверке бакета MinIO. Клиент S3 из шаблона ходит по
|
|
||||||
`https`, а MinIO из compose слушает `http`. Приложение стартует и работает, S3 в Срезе 0 не используется
|
- Трейсбэк SMB: `Ошибка при регистрации сессии SMB ... Failed to connect to 'localhost:445': Connection refused`.
|
||||||
(`app.state.storage` остаётся пустым). Недоступность S3 или NATS при старте приложение не роняет: ошибка логируется,
|
Настройки `OPENBAO__SMB__*` — заглушки, SMB в Срезе 0 не используется; игнорируйте. Пока на `localhost:445` ничего
|
||||||
а состояние NATS видно в `/healthcheck`.
|
не слушает, отказ приходит сразу (старт не задерживается); если порт отвечает, но молчит, ожидание ограничено
|
||||||
|
тайм-аутом `smbclient` (60 с).
|
||||||
|
- Трейсбэк S3: `ClientConnectorSSLError ... localhost:9000`. Клиент S3 из шаблона ходит по `https`, а MinIO из compose
|
||||||
|
слушает `http`. S3 в Срезе 0 не используется (`app.state.storage` остаётся пустым). Это до исправления в задаче 22
|
||||||
|
(отдельная настройка схемы подключения к MinIO).
|
||||||
|
|
||||||
|
Недоступность SMB, S3 или NATS при старте приложение не роняет: ошибка логируется, состояние NATS видно в
|
||||||
|
`/healthcheck`.
|
||||||
|
|
||||||
|
Предупреждение «Включён dev-эмитент токенов … только для разработки» появляется не при старте, а при первом
|
||||||
|
запросе к защищённому эндпоинту (`/api/v1/me`): проверяющий токены создаётся лениво (штатно, см. «Безопасность
|
||||||
|
dev-режима»).
|
||||||
|
|
||||||
### Остановка и сброс
|
### Остановка и сброс
|
||||||
|
|
||||||
@ -180,10 +197,16 @@ docker compose -f ../docs/dev/docker-compose.yml down -v # полный сб
|
|||||||
| `VERSION` | `1.0.0` | версия в `/healthcheck` и OpenAPI |
|
| `VERSION` | `1.0.0` | версия в `/healthcheck` и OpenAPI |
|
||||||
| `OPENBAO__DATABASE__DATABASE_URL` | — (обязательно) | PostgreSQL, драйвер asyncpg: `postgresql+asyncpg://armka:armka@localhost:5432/armka` |
|
| `OPENBAO__DATABASE__DATABASE_URL` | — (обязательно) | PostgreSQL, драйвер asyncpg: `postgresql+asyncpg://armka:armka@localhost:5432/armka` |
|
||||||
| `OPENBAO__MINIO__MINIO_URL` | — (обязательно) | адрес MinIO без схемы (`host:port`, так ждёт `miniopy-async`) |
|
| `OPENBAO__MINIO__MINIO_URL` | — (обязательно) | адрес MinIO без схемы (`host:port`, так ждёт `miniopy-async`) |
|
||||||
| `OPENBAO__MINIO__MINIO_ADMIN_LOGIN`, `..._PASSWORD`, `..._BUCKET` | — (обязательно) | учётные данные и бакет MinIO |
|
| `OPENBAO__MINIO__MINIO_ADMIN_LOGIN` | — (обязательно) | логин MinIO |
|
||||||
|
| `OPENBAO__MINIO__MINIO_ADMIN_PASSWORD` | — (обязательно) | пароль MinIO |
|
||||||
|
| `OPENBAO__MINIO__MINIO_BUCKET` | — (обязательно) | бакет MinIO (`arm-ka`) |
|
||||||
| `OPENBAO__NATS__NATS_URL` | — (обязательно) | адрес NATS (`nats://localhost:4222`) |
|
| `OPENBAO__NATS__NATS_URL` | — (обязательно) | адрес NATS (`nats://localhost:4222`) |
|
||||||
| `OPENBAO__NATS__NATS_SEED`, `OPENBAO__NATS__NATS_JWT` | пусто | nkeys; пусто — подключение без учётных данных (compose, тесты). Задаются оба или ни одного |
|
| `OPENBAO__NATS__NATS_SEED` | пусто | nkey seed; пусто — подключение без учётных данных (compose, тесты). Задаётся вместе с `NATS_JWT` или не задаётся вовсе |
|
||||||
| `OPENBAO__SMB__SMB_HOST`, `SMB_PATH`, `SMB_LOGIN`, `SMB_PASSWORD` | — (обязательно) | заглушки SMB (в Срезе 0 не используется, блок обязателен) |
|
| `OPENBAO__NATS__NATS_JWT` | пусто | JWT NATS; см. `NATS_SEED` |
|
||||||
|
| `OPENBAO__SMB__SMB_HOST` | — (обязательно) | заглушка SMB (в Срезе 0 не используется, блок обязателен) |
|
||||||
|
| `OPENBAO__SMB__SMB_PATH` | — (обязательно) | заглушка SMB |
|
||||||
|
| `OPENBAO__SMB__SMB_LOGIN` | — (обязательно) | заглушка SMB |
|
||||||
|
| `OPENBAO__SMB__SMB_PASSWORD` | — (обязательно) | заглушка SMB |
|
||||||
| `NATS_ENABLED` | `false` | подключение к NATS и обмен через `recognition_job`; без него `/healthcheck` показывает `nats=off` |
|
| `NATS_ENABLED` | `false` | подключение к NATS и обмен через `recognition_job`; без него `/healthcheck` показывает `nats=off` |
|
||||||
| `OUTBOX_POLL_SECONDS` | `5` | период опроса outbox |
|
| `OUTBOX_POLL_SECONDS` | `5` | период опроса outbox |
|
||||||
| `ACK_TIMEOUT_SECONDS` | `30` | ожидание ack сервиса распознавания до повторной публикации |
|
| `ACK_TIMEOUT_SECONDS` | `30` | ожидание ack сервиса распознавания до повторной публикации |
|
||||||
@ -231,7 +254,8 @@ docker compose -f ../docs/dev/docker-compose.yml down -v # полный сб
|
|||||||
и удаляется в конце. Параметры подключения берутся из `api/.env.test` (`pytest.ini` задаёт `ENV_FILE=.env.test`).
|
и удаляется в конце. Параметры подключения берутся из `api/.env.test` (`pytest.ini` задаёт `ENV_FILE=.env.test`).
|
||||||
Сейчас этот файл указывает на временную тестовую инфраструктуру (PostgreSQL `55432`, NATS `54222`, MinIO `59000`),
|
Сейчас этот файл указывает на временную тестовую инфраструктуру (PostgreSQL `55432`, NATS `54222`, MinIO `59000`),
|
||||||
а не на стандартные порты compose: чтобы гонять интеграционные тесты против `make up`, поправьте порты в
|
а не на стандартные порты compose: чтобы гонять интеграционные тесты против `make up`, поправьте порты в
|
||||||
`api/.env.test` на `5432`, `4222`, `9000` (не коммитьте это изменение без согласования).
|
`api/.env.test` на `5432`, `4222`, `9000` (не коммитьте это изменение без согласования). То же относится к
|
||||||
|
`make migration-cycle` и `make check-full`: они тоже читают `.env.test` через `pytest.ini`.
|
||||||
- **Реальные данные** — репозиторий `../fixtures/` (путь можно задать переменной `ARM_KA_FIXTURES`). Тесты с маркером
|
- **Реальные данные** — репозиторий `../fixtures/` (путь можно задать переменной `ARM_KA_FIXTURES`). Тесты с маркером
|
||||||
`fixtures` без каталога пропускаются с понятной причиной.
|
`fixtures` без каталога пропускаются с понятной причиной.
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user