Развертывание Docker
DocPlatform поставляется как мультиархитектурный Docker-образ (amd64/arm64) на базе Alpine Linux.
Быстрый старт
docker run -d \
--name docplatform \
-p 3000:3000 \
-v docplatform-data:/data \
ghcr.io/valoryx-org/docplatform:latest
Откройте http://localhost:3000 и зарегистрируйте учетную запись администратора.
Первый запуск
При первой загрузке DocPlatform автоматически:
- Создает базу данных SQLite по адресу
/data/data.db - Генерирует ключ подписи RS256 по адресу
/data/jwt-key.pem - Инициализирует индекс полнотекстового поиска
- Начинает слушать на порту 3000
Первый зарегистрированный пользователь становится Super Admin с полным доступом к платформе. Ручной шаг init не требуется — контейнер готов к использованию сразу.
# Verify the container started correctly
docker logs docplatform
# → INFO Server starting port=3000 version=v0.5.2
# → INFO Database initialized path=/data/data.db
# → INFO Search index ready documents=0
# → INFO Listening on http://0.0.0.0:3000
Docker Compose
Для более удобного управления используйте Docker Compose:
# docker-compose.yml
services:
docplatform:
image: ghcr.io/valoryx-org/docplatform:latest
container_name: docplatform
ports:
- "3000:3000"
volumes:
- docplatform-data:/data
- ./deploy_key:/etc/docplatform/deploy_key:ro
environment:
- DATA_DIR=/data
- PORT=3000
- GIT_SSH_KEY_PATH=/etc/docplatform/deploy_key
- BACKUP_RETENTION_DAYS=30
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 10s
volumes:
docplatform-data:
docker compose up -d
Детали образа
| Свойство | Значение |
|---|---|
| Registry | ghcr.io/valoryx-org/docplatform |
| Базовый образ | Alpine Linux 3.19 |
| Архитектуры | linux/amd64, linux/arm64 |
| Размер | ~120 МБ в сжатом виде |
| Пользователь | Non-root (docplatform, UID 1000) |
| Открытый порт | 3000 |
| Директория данных | /data |
Теги
| Тег | Описание |
|---|---|
latest |
Последний стабильный релиз |
v0.5.2 |
Конкретная версия |
v0.5 |
Последний патч для v0.5.x |
Volumes
Примонтируйте persistent volume к /data для сохранения данных между перезапусками контейнера:
-v docplatform-data:/data
Директория /data содержит:
/data/
├── data.db # SQLite database
├── jwt-key.pem # Auto-generated RS256 signing key
├── backups/ # Daily backup files
└── workspaces/
└── {workspace-id}/
├── docs/ # Markdown files
├── .git/ # Git repository (if connected)
└── .docplatform/
└── config.yaml
Не пропускайте монтирование volume. Без него все данные будут потеряны при удалении контейнера.
Переменные окружения
Передавайте конфигурацию через флаги -e, --env-file или Docker Compose environment:
docker run -d \
--name docplatform \
-p 3000:3000 \
-v docplatform-data:/data \
-e DATA_DIR=/data \
-e SMTP_HOST=smtp.example.com \
-e SMTP_PORT=587 \
-e SMTP_FROM=[email protected] \
-e SMTP_USERNAME=[email protected] \
-e SMTP_PASSWORD=app-password \
-e OIDC_GOOGLE_CLIENT_ID=your-client-id \
-e OIDC_GOOGLE_CLIENT_SECRET=your-client-secret \
ghcr.io/valoryx-org/docplatform:latest
Или используйте файл env:
docker run -d \
--name docplatform \
-p 3000:3000 \
-v docplatform-data:/data \
--env-file .env.production \
ghcr.io/valoryx-org/docplatform:latest
Полный справочник смотрите в разделе Переменные окружения.
SSH-ключ для синхронизации git
Примонтируйте deploy key как read-only volume:
-v /path/to/deploy_key:/etc/docplatform/deploy_key:ro
-e GIT_SSH_KEY_PATH=/etc/docplatform/deploy_key
Убедитесь, что файл ключа имеет правильные права на хосте:
chmod 600 /path/to/deploy_key
Проверки состояния
DocPlatform предоставляет endpoints для проверки состояния:
| Endpoint | Назначение |
|---|---|
GET /health |
Базовая проверка работоспособности (сервер работает) |
GET /ready |
Проверка готовности (база данных и поиск инициализированы) |
Используйте их для healthcheck Docker, проб балансировщика нагрузки или проб liveness/readiness оркестратора.
# Quick liveness check
curl -f http://localhost:3000/health
# → {"status":"ok"}
# Readiness check (database + search initialized)
curl -f http://localhost:3000/ready
# → {"status":"ok","database":"ok","search":"ok"}
С reverse proxy
Caddy + Docker Compose
services:
docplatform:
image: ghcr.io/valoryx-org/docplatform:latest
volumes:
- docplatform-data:/data
environment:
- DATA_DIR=/data
- HOST=0.0.0.0
restart: unless-stopped
caddy:
image: caddy:2-alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy-data:/data
- caddy-config:/config
restart: unless-stopped
volumes:
docplatform-data:
caddy-data:
caddy-config:
# Caddyfile
docs.yourcompany.com {
reverse_proxy docplatform:3000
}
Caddy обрабатывает TLS автоматически через Let’s Encrypt.
Обновления
# Pull the latest image
docker pull ghcr.io/valoryx-org/docplatform:latest
# Recreate the container
docker compose up -d
Или с обычным Docker:
docker pull ghcr.io/valoryx-org/docplatform:latest
docker stop docplatform
docker rm docplatform
docker run -d \
--name docplatform \
-p 3000:3000 \
-v docplatform-data:/data \
ghcr.io/valoryx-org/docplatform:latest
Данные в volume сохраняются при пересоздании контейнера.
Сборка из исходного кода
Соберите собственный образ из Dockerfile:
cd Phase05/src
docker build -t docplatform:custom .
Dockerfile использует multi-stage сборку:
- Build stage — компиляция Go с отключенным CGO
- Frontend stage — статический экспорт Next.js
- Runtime stage — Alpine Linux с скомпилированным бинарным файлом и статическими ресурсами
Логи
# Follow container logs
docker logs -f docplatform
# Last 100 lines
docker logs --tail 100 docplatform
Логи структурированы в формате JSON с идентификаторами запросов для наблюдаемости.
Резервное копирование и восстановление
Ручное резервное копирование
# Copy the database from the container
docker cp docplatform:/data/data.db ./backup-$(date +%Y%m%d).db
Автоматическое резервное копирование
Ежедневные резервные копии создаются автоматически внутри контейнера (включены по умолчанию). Они хранятся в /data/backups/ и включены в volume.
Восстановление
docker stop docplatform
docker cp ./backup-20250115.db docplatform:/data/data.db
docker start docplatform