Page:
Install-Docker
Clone
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 (опционально)
- В
.envустановитеTRUST_PROXY=1 - Отредактируйте
caddy/Caddyfile.docker.example:- укажите свой домен вместо
shop.example.com - или оставьте блок
:80для доступа по IP
- укажите свой домен вместо
- Запуск:
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 |
Подробнее: Решение проблем