Files
shop10/wiki/Install-Docker.md

4.4 KiB
Raw Permalink Blame History

Установка через Docker Compose

Полный стек в контейнерах: PostgreSQL 17 + приложение Shop (+ опционально Caddy для HTTPS).

1. Требования

  • Docker Engine 24 или новее
  • Docker Compose v2 (docker compose)
  • Git
  • Порты: 3000 (сайт) или 80/443 (с Caddy)

Проверка:

docker --version
docker compose version

2. Получение кода

git clone https://git.evilfox.cc/test/shop10.git
cd shop10
git checkout v0.10.0

3. Настройка переменных

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. Запуск

docker compose up -d --build

Первый запуск: сборка образа app, скачивание postgres:17-alpine, создание таблиц и демо-товаров.

Статус:

docker compose ps
docker compose logs -f app

5. Проверка

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. Запуск:
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. Обновление версии

cd shop10
git fetch --tags
git checkout v0.10.0   # или новый тег
docker compose up -d --build

9. Только PostgreSQL (разработка)

Приложение на хосте (npm run dev), БД в Docker:

docker compose -f docker-compose.dev.yml up -d
cp .env.example .env

В .env:

DATABASE_URL=postgresql://shop:shop@127.0.0.1:5432/shop
HOST=0.0.0.0
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

Подробнее: Решение проблем