docs: wiki — установка Docker и без Docker (v0.10.0)

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
shop
2026-05-17 09:47:47 +03:00
parent c6bac33c71
commit b9e6060610
7 changed files with 586 additions and 0 deletions
+143
View File
@@ -0,0 +1,143 @@
# Установка через Docker Compose
Полный стек в контейнерах: **PostgreSQL 17** + **приложение Shop** (+ опционально **Caddy** для HTTPS).
## 1. Требования
- Docker Engine 24 или новее
- Docker Compose v2 (`docker compose`)
- Git
- Порты: **3000** (сайт) или **80/443** (с Caddy)
Проверка:
```bash
docker --version
docker compose version
```
## 2. Получение кода
```bash
git clone https://git.evilfox.cc/test/shop10.git
cd shop10
git checkout v0.10.0
```
## 3. Настройка переменных
```bash
cp .env.docker.example .env
nano .env
```
| Переменная | Описание | Пример |
|------------|----------|--------|
| `POSTGRES_USER` | Пользователь БД | `shop` |
| `POSTGRES_PASSWORD` | Пароль БД | смените в production |
| `POSTGRES_DB` | Имя базы | `shop` |
| `SESSION_SECRET` | Секрет сессий | `openssl rand -hex 32` |
| `APP_PORT` | Порт на хосте | `3000` |
| `TRUST_PROXY` | За Caddy: `1`, иначе `0` | `0` |
## 4. Запуск
```bash
docker compose up -d --build
```
Первый запуск: сборка образа `app`, скачивание `postgres:17-alpine`, создание таблиц и демо-товаров.
Статус:
```bash
docker compose ps
docker compose logs -f app
```
## 5. Проверка
```bash
curl -s http://127.0.0.1:3000/health
```
В браузере: **http://IP_СЕРВЕРА:3000** или **http://localhost:3000**
## 6. HTTPS с Caddy (опционально)
1. В `.env` установите `TRUST_PROXY=1`
2. Отредактируйте `caddy/Caddyfile.docker.example`:
- укажите свой домен вместо `shop.example.com`
- или оставьте блок `:80` для доступа по IP
3. Запуск:
```bash
docker compose --profile proxy up -d --build
```
Открыты порты **80** и **443**. Контейнер `caddy` проксирует на `app:3000`.
## 7. Полезные команды
| Команда | Действие |
|---------|----------|
| `docker compose logs -f app` | Логи приложения |
| `docker compose logs -f postgres` | Логи БД |
| `docker compose restart app` | Перезапуск приложения |
| `docker compose down` | Остановить контейнеры |
| `docker compose down -v` | Остановить и **удалить данные БД** |
| `docker compose up -d --build` | Пересборка после `git pull` |
## 8. Обновление версии
```bash
cd shop10
git fetch --tags
git checkout v0.10.0 # или новый тег
docker compose up -d --build
```
## 9. Только PostgreSQL (разработка)
Приложение на хосте (`npm run dev`), БД в Docker:
```bash
docker compose -f docker-compose.dev.yml up -d
cp .env.example .env
```
В `.env`:
```env
DATABASE_URL=postgresql://shop:shop@127.0.0.1:5432/shop
HOST=0.0.0.0
```
```bash
npm install
npm run dev
```
## 10. Архитектура
```
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Браузер │────▶│ Caddy :443 │────▶│ app :3000 │
│ │ │ (опционально)│ │ Node.js │
└─────────────┘ └──────────────┘ └──────┬──────┘
┌──────▼──────┐
│ postgres:17 │
└─────────────┘
```
## 11. Типичные ошибки
| Симптом | Решение |
|---------|---------|
| `port is already allocated` | Смените `APP_PORT` в `.env` или освободите порт 3000 |
| `app` unhealthy | `docker compose logs app` — часто нет связи с postgres |
| Пустой каталог | Подождите seed; `docker compose logs app` |
| 502 с Caddy | `TRUST_PROXY=1`, проверьте `docker compose ps` |
Подробнее: [Решение проблем](Troubleshooting)