fix(dev): healthcheck PostgreSQL по TCP, порты на 127.0.0.1, пароли MinIO из .env в README
- pg_isready с -h 127.0.0.1: временный сервер initdb слушает только сокет (M-3)
- README: mc и psql берут учётные данные из переменных окружения контейнера, а не зашитые значения (M-4)
- порты postgres/nats/minio публикуются на ${BIND_ADDR:-127.0.0.1}; BIND_ADDR добавлен в .env.example и README,
примечание про безопасность обновлено (M-6, R-9)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
5bebdfe9fc
commit
5f2be96e11
@ -2,6 +2,9 @@
|
|||||||
# Файл читают docker compose (из этого каталога) и, блоком ниже, сервисы при запуске из venv.
|
# Файл читают docker compose (из этого каталога) и, блоком ниже, сервисы при запуске из venv.
|
||||||
|
|
||||||
# --- Переменные docker-compose: учётные данные, порты хоста, бакет ---
|
# --- Переменные docker-compose: учётные данные, порты хоста, бакет ---
|
||||||
|
# Адрес привязки портов хоста: 127.0.0.1 — только эта машина; 0.0.0.0 — доступ с других машин (пароли по умолчанию dev)
|
||||||
|
BIND_ADDR=127.0.0.1
|
||||||
|
|
||||||
# PostgreSQL 16 (схема dkb создаётся миграциями arm-core, не compose)
|
# PostgreSQL 16 (схема dkb создаётся миграциями arm-core, не compose)
|
||||||
POSTGRES_DB=armka
|
POSTGRES_DB=armka
|
||||||
POSTGRES_USER=armka
|
POSTGRES_USER=armka
|
||||||
|
|||||||
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
- Docker и compose v2 (проверено на docker 28 / compose 2.34).
|
- Docker и compose v2 (проверено на docker 28 / compose 2.34).
|
||||||
- `uv` и Python 3.11 — для запуска сервисов из venv (версия Python — как на платформе).
|
- `uv` и Python 3.11 — для запуска сервисов из venv (версия Python — как на платформе).
|
||||||
- Свободные порты хоста: 5432 (PostgreSQL), 4222 и 8222 (NATS и его мониторинг), 9000 и 9001 (MinIO API и консоль).
|
- Свободные порты хоста (по умолчанию доступны только с `127.0.0.1`, см. `BIND_ADDR`): 5432 (PostgreSQL), 4222 и 8222 (NATS и его мониторинг), 9000 и 9001 (MinIO API и консоль).
|
||||||
Занятые порты меняются в `.env` (см. «Типичные проблемы»).
|
Занятые порты меняются в `.env` (см. «Типичные проблемы»).
|
||||||
|
|
||||||
## Запуск инфраструктуры
|
## Запуск инфраструктуры
|
||||||
@ -36,10 +36,10 @@ docker compose up -d && docker compose up -d --wait postgres nats minio
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker compose ps # postgres, nats, minio — Up (healthy); minio-init — Exited (0)
|
docker compose ps # postgres, nats, minio — Up (healthy); minio-init — Exited (0)
|
||||||
docker compose exec postgres psql -U armka -d armka -c 'select version()'
|
docker compose exec postgres sh -c 'psql -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "select version()"'
|
||||||
curl -s localhost:8222/healthz # {"status":"ok"}
|
curl -s localhost:8222/healthz # {"status":"ok"}
|
||||||
curl -s localhost:8222/varz | grep -A1 jetstream # "jetstream": {} — JetStream не включён
|
curl -s localhost:8222/varz | grep -A1 jetstream # "jetstream": {} — JetStream не включён
|
||||||
docker compose run --rm --entrypoint sh minio-init -c 'mc alias set local http://minio:9000 minioadmin minioadmin >/dev/null && mc ls local'
|
docker compose run --rm --entrypoint sh minio-init -c 'mc alias set local http://minio:9000 "$MINIO_ROOT_USER" "$MINIO_ROOT_PASSWORD" >/dev/null && mc ls local'
|
||||||
# [...] 0B arm-ka/
|
# [...] 0B arm-ka/
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -55,6 +55,7 @@ docker compose run --rm --entrypoint sh minio-init -c 'mc alias set local http:/
|
|||||||
|
|
||||||
| Переменная | По умолчанию | Для чего |
|
| Переменная | По умолчанию | Для чего |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
|
| `BIND_ADDR` | `127.0.0.1` | адрес привязки всех портов хоста; `0.0.0.0` — доступ с других машин (небезопасно, см. «Примечания») |
|
||||||
| `POSTGRES_DB` | `armka` | имя БД |
|
| `POSTGRES_DB` | `armka` | имя БД |
|
||||||
| `POSTGRES_USER` | `armka` | пользователь БД |
|
| `POSTGRES_USER` | `armka` | пользователь БД |
|
||||||
| `POSTGRES_PASSWORD` | `armka` | пароль БД |
|
| `POSTGRES_PASSWORD` | `armka` | пароль БД |
|
||||||
@ -160,7 +161,9 @@ postgres nats minio`, затем `make test-integration` (или `make check-ful
|
|||||||
только для dev. Решения R-5/R-6: [`design.md`](../openspec/changes/slice-0-skeleton/design.md), раздел
|
только для dev. Решения R-5/R-6: [`design.md`](../openspec/changes/slice-0-skeleton/design.md), раздел
|
||||||
«Decisions made without discussion», решения №16–17. Замена на официальные образы — две строки `image:` в
|
«Decisions made without discussion», решения №16–17. Замена на официальные образы — две строки `image:` в
|
||||||
`docker-compose.yml` (и удаление `user: "0:0"`).
|
`docker-compose.yml` (и удаление `user: "0:0"`).
|
||||||
- **Безопасность.** Порты публикуются на `0.0.0.0` с паролями по умолчанию: это dev-окружение, не запускайте его в
|
- **Безопасность.** По умолчанию порты публикуются только на `127.0.0.1` (`BIND_ADDR`), снаружи машины они недоступны.
|
||||||
|
Чтобы открыть их для других машин, задайте в `.env` `BIND_ADDR=0.0.0.0` — но пароли по умолчанию (`armka`,
|
||||||
|
`minioadmin`) годятся только для dev, поэтому сначала смените их (в обоих блоках `.env`) и не делайте этого в
|
||||||
недоверенной сети.
|
недоверенной сети.
|
||||||
|
|
||||||
## Типичные проблемы
|
## Типичные проблемы
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
# Ожидание готовности: docker compose up -d --wait postgres nats minio. Голый `up -d --wait` возвращает код 1, потому что
|
# Ожидание готовности: docker compose up -d --wait postgres nats minio. Голый `up -d --wait` возвращает код 1, потому что
|
||||||
# одноразовый minio-init завершается (хотя и с кодом 0) — для скриптов указывайте сервисы явно.
|
# одноразовый minio-init завершается (хотя и с кодом 0) — для скриптов указывайте сервисы явно.
|
||||||
# Все учётные данные, порты хоста и имя бакета берутся из .env (значения по умолчанию — dev).
|
# Все учётные данные, порты хоста и имя бакета берутся из .env (значения по умолчанию — dev).
|
||||||
|
# Порты публикуются только на 127.0.0.1; адрес привязки меняется через BIND_ADDR (см. .env.example).
|
||||||
# Профиль `services` (arm-core, tabular-parser, scan-gateway, scan-emulator) добавляется в фазе 2.
|
# Профиль `services` (arm-core, tabular-parser, scan-gateway, scan-emulator) добавляется в фазе 2.
|
||||||
|
|
||||||
# Фиксированное имя проекта: одинаковые тома и сети из любого worktree (.wt/<срез>/docs/dev).
|
# Фиксированное имя проекта: одинаковые тома и сети из любого worktree (.wt/<срез>/docs/dev).
|
||||||
@ -16,11 +17,11 @@ services:
|
|||||||
POSTGRES_USER: ${POSTGRES_USER:-armka}
|
POSTGRES_USER: ${POSTGRES_USER:-armka}
|
||||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-armka}
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-armka}
|
||||||
ports:
|
ports:
|
||||||
- "${POSTGRES_PORT:-5432}:5432"
|
- "${BIND_ADDR:-127.0.0.1}:${POSTGRES_PORT:-5432}:5432"
|
||||||
volumes:
|
volumes:
|
||||||
- postgres-data:/var/lib/postgresql/data
|
- postgres-data:/var/lib/postgresql/data
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
||||||
interval: 3s
|
interval: 3s
|
||||||
timeout: 3s
|
timeout: 3s
|
||||||
retries: 20
|
retries: 20
|
||||||
@ -31,8 +32,8 @@ services:
|
|||||||
image: nats:2.10.29-alpine
|
image: nats:2.10.29-alpine
|
||||||
command: ["-m", "8222"]
|
command: ["-m", "8222"]
|
||||||
ports:
|
ports:
|
||||||
- "${NATS_PORT:-4222}:4222"
|
- "${BIND_ADDR:-127.0.0.1}:${NATS_PORT:-4222}:4222"
|
||||||
- "${NATS_MONITOR_PORT:-8222}:8222"
|
- "${BIND_ADDR:-127.0.0.1}:${NATS_MONITOR_PORT:-8222}:8222"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "wget -q --spider http://127.0.0.1:8222/healthz || exit 1"]
|
test: ["CMD-SHELL", "wget -q --spider http://127.0.0.1:8222/healthz || exit 1"]
|
||||||
interval: 3s
|
interval: 3s
|
||||||
@ -50,8 +51,8 @@ services:
|
|||||||
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin}
|
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin}
|
||||||
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin}
|
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin}
|
||||||
ports:
|
ports:
|
||||||
- "${MINIO_API_PORT:-9000}:9000"
|
- "${BIND_ADDR:-127.0.0.1}:${MINIO_API_PORT:-9000}:9000"
|
||||||
- "${MINIO_CONSOLE_PORT:-9001}:9001"
|
- "${BIND_ADDR:-127.0.0.1}:${MINIO_CONSOLE_PORT:-9001}:9001"
|
||||||
volumes:
|
volumes:
|
||||||
- minio-data:/data
|
- minio-data:/data
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user