- добавлен базовый pnpm workspace для будущих приложений - добавлена dev-инфраструктура PostgreSQL и MinIO - добавлены env-пример и базовые правила репозитория - зафиксированы архитектура, data model и API-контракт - описан контракт с внешним imgproxy
85 lines
1.9 KiB
Markdown
85 lines
1.9 KiB
Markdown
# Локальная разработка
|
||
|
||
## Принцип
|
||
|
||
В Docker запускаем стабильную инфраструктуру. Кодовые сервисы позже запускаем нодой с hot reload.
|
||
|
||
Сейчас в Docker есть только:
|
||
|
||
- PostgreSQL;
|
||
- MinIO;
|
||
- MinIO bucket init.
|
||
|
||
`api`, `worker`, `admin` и `gateway` пока не созданы.
|
||
|
||
## Запуск инфраструктуры
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
pnpm install
|
||
pnpm infra:up
|
||
```
|
||
|
||
Проверить compose config:
|
||
|
||
```bash
|
||
pnpm infra:config
|
||
```
|
||
|
||
Остановить:
|
||
|
||
```bash
|
||
pnpm infra:down
|
||
```
|
||
|
||
Логи:
|
||
|
||
```bash
|
||
pnpm infra:logs
|
||
```
|
||
|
||
## Порты
|
||
|
||
| Сервис | URL |
|
||
|---|---|
|
||
| PostgreSQL | `localhost:5433` |
|
||
| MinIO API | `http://localhost:9000` |
|
||
| MinIO Console | `http://localhost:9001` |
|
||
|
||
## Будущий dev flow
|
||
|
||
Когда появятся приложения:
|
||
|
||
```text
|
||
React/Vite admin localhost:5173
|
||
-> NestJS API localhost:3001
|
||
-> PostgreSQL localhost:5433
|
||
-> MinIO localhost:9000
|
||
|
||
worker node process
|
||
-> PostgreSQL
|
||
-> MinIO
|
||
-> external imgproxy
|
||
|
||
gateway Caddy/Souin localhost:8888
|
||
-> S3/MinIO ready variant
|
||
-> API/generator fallback on host.docker.internal:3001
|
||
```
|
||
|
||
Для Linux gateway container должен видеть host services через:
|
||
|
||
```yaml
|
||
extra_hosts:
|
||
- "host.docker.internal:host-gateway"
|
||
```
|
||
|
||
## External imgproxy для разработки
|
||
|
||
`imgproxy` не входит в `image-platform` stack. Для локальной разработки можно использовать любой внешний endpoint и прописать его в `.env`:
|
||
|
||
```env
|
||
IMGPROXY_UPSTREAM=http://localhost:18080
|
||
```
|
||
|
||
Если нужен локальный standalone imgproxy, его можно запустить отдельно вне этого compose stack. Он остаётся внешней зависимостью платформы.
|