Clone
1
Install-Docker
test edited this page 2026-05-17 07:06:20 +00:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Установка через 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

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