Опубликовать портал
CI, Docker-образ и развертывание портала через Dokploy или compose.
Непрерывная интеграция
.github/workflows/ci.yml запускается на push в main и на каждый pull request:
pnpm install --frozen-lockfile
pnpm types:check
pnpm buildСборка фиксирует Node.js 24 и pnpm 11.7.0 — те же версии, что в package.json.
Docker
Сборка образа:
docker build -t re-doc-portal:latest .Запуск:
docker run -d --name re-doc-portal --restart unless-stopped -p 3000:3000 -e HOSTNAME=0.0.0.0 -e PORT=3000 -e NEXT_PUBLIC_SITE_URL=https://docs.example.com re-doc-portal:latestЛокальная сборка и запуск через compose:
docker compose up -d --buildDockerfile использует standalone-режим Next.js: в финальный образ попадают
только server.js, необходимые зависимости и статика.
Dokploy
Рекомендуемый способ развертывания — приложение Dokploy на основе имеющегося
Dockerfile.
Подключить репозиторий
В разделе Git создайте или установите Dokploy GitHub App и выдайте доступ к
репозиторию портала.
Создать приложение
| Параметр | Значение |
|---|---|
| Provider | GitHub |
| Repository | репозиторий портала |
| Branch | main |
| Build path | / |
| Build type | Dockerfile |
| Dockerfile path | Dockerfile |
| Port | 3000 |
| Health check path | /docs |
Задать переменные окружения
HOSTNAME=0.0.0.0
PORT=3000
NEXT_PUBLIC_SITE_URL=https://docs.example.comНастроить домен
На вкладке Domains добавьте домен, укажите порт сервиса 3000 и включите
HTTPS, затем выполните развертывание.
Dokploy пересобирает приложение автоматически при появлении новых коммитов в выбранной ветке.
Обновление на сервере вручную
git pull && docker compose up -d --buildПроверка после развертывания
/— главная страница, карточки продуктов;/docs— документация, выпадающий список продуктов, боковое меню;- поиск по документации;
- светлая и темная тема;
/llms.txtи/llms-full.txt;- Open Graph-изображение любой страницы:
/og/docs/<путь>/image.png.
Health check
В качестве проверки готовности используется /docs, а не / — этот маршрут
зависит от коллекции документации и падает, если сборка контента не удалась.

