feat: Docker Compose — app, PostgreSQL 17, опциональный Caddy

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
shop
2026-05-17 09:41:03 +03:00
parent 8dae5d37fc
commit a4541cf266
7 changed files with 200 additions and 16 deletions
+55 -9
View File
@@ -11,21 +11,64 @@
## Требования
- Node.js 18+
- PostgreSQL 17
- npm
- Node.js 18+ и PostgreSQL 17 — **или** Docker / Docker Compose
---
## PostgreSQL 17
## Docker Compose (рекомендуется для теста)
### Docker (разработка / тест)
Полный стек: **PostgreSQL 17** + **приложение Node.js**.
```bash
docker compose up -d
# БД: postgresql://shop:shop@127.0.0.1:5432/shop
cp .env.docker.example .env
# Отредактируйте SESSION_SECRET в .env
docker compose up -d --build
docker compose ps
curl -s http://127.0.0.1:3000/health
```
Сайт: **http://localhost:3000**
| Команда | Описание |
|---------|----------|
| `docker compose up -d --build` | Сборка и запуск |
| `docker compose logs -f app` | Логи приложения |
| `docker compose down` | Остановка |
| `docker compose down -v` | Остановка + удаление БД |
### Caddy в Docker (HTTPS, опционально)
```bash
# В .env: TRUST_PROXY=1
# Отредактируйте caddy/Caddyfile.docker.example (домен)
docker compose --profile proxy up -d --build
```
Порты: **80**, **443** (Caddy) → `app:3000`.
### Только PostgreSQL (разработка на хосте)
```bash
docker compose -f docker-compose.dev.yml up -d
cp .env.example .env
# DATABASE_URL=postgresql://shop:shop@127.0.0.1:5432/shop
npm install && npm run dev
```
### Файлы
| Файл | Назначение |
|------|------------|
| `Dockerfile` | Образ приложения |
| `docker-compose.yml` | app + postgres (+ caddy с профилем `proxy`) |
| `docker-compose.dev.yml` | только postgres для `npm run dev` |
| `.env.docker.example` | переменные для compose |
---
## PostgreSQL 17 (без Docker)
### Ubuntu (сервер)
```bash
@@ -301,7 +344,7 @@ journalctl -u shop -n 50 --no-pager
## Локальная разработка
```bash
docker compose up -d
docker compose -f docker-compose.dev.yml up -d
cp .env.example .env
npm install
npm run dev
@@ -318,9 +361,12 @@ npm run dev
## Структура
```
Dockerfile
docker-compose.yml
docker-compose.dev.yml
postgres/init/01_schema.sql
docker-compose.yml — PostgreSQL 17 локально
caddy/Caddyfile.example
caddy/Caddyfile.docker.example
deploy/shop.service
scripts/
setup-postgres-ubuntu.sh