Files
Baradb/docs/ru/docker.md
T
dimgigov 8c29e700c7
CI / test (push) Has been cancelled
CI / verify (push) Has been cancelled
Clients CI / build-server (push) Has been cancelled
Clients CI / test-python (push) Has been cancelled
Clients CI / test-javascript (push) Has been cancelled
Clients CI / test-nim (push) Has been cancelled
Clients CI / test-rust (push) Has been cancelled
Revert "Update repository URLs from GitHub to Codeberg"
This reverts commit 956066631e.
2026-05-15 12:10:36 +03:00

189 lines
4.9 KiB
Markdown
Raw Blame History

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
## Быстрый старт
```bash
# Клонировать репозиторий
git clone https://github.com/katehonz/barabaDB.git
cd barabaDB
# Собрать образ
docker build -t baradb:latest .
# Запустить с Docker Compose
docker compose up -d
# Проверить статус
docker compose ps
docker compose logs -f
```
## Файлы
| Файл | Описание |
|------|----------|
| `Dockerfile` | Multi-stage production build |
| `docker-compose.yml` | Development конфигурация |
| `docker-compose.prod.yml` | Production конфигурация |
| `docker-compose.override.yml` | Development override (автоматически загружается) |
| `docker-entrypoint.sh` | Entrypoint скрипт для инициализации |
| `.dockerignore` | Файлы, которые не копируются в образ |
| `scripts/docker-build.sh` | Helper скрипт для сборки |
| `scripts/docker-run.sh` | Helper скрипт для ручного запуска |
## Создание образа
```bash
# Стандартная сборка
docker build -t baradb:latest .
# Со скриптом
./scripts/docker-build.sh
# С конкретной версией
IMAGE_NAME=baradb VERSION=0.1.0 ./scripts/docker-build.sh
```
## Запуск
### Development (docker compose)
```bash
# Запуск в фоне
docker compose up -d
# Остановка
docker compose down
# Остановка и удаление volumes (ВНИМАНИЕ — удаляет данные!)
docker compose down -v
# Просмотр логов
docker compose logs -f
```
### Production (docker compose)
```bash
# Запуск с production конфигурацией
docker compose -f docker-compose.prod.yml up -d
# Проверка healthcheck
docker compose -f docker-compose.prod.yml ps
```
### Ручной (docker run)
```bash
# Со скриптом
./scripts/docker-run.sh
# Вручную
docker run -d \
--name baradb \
-p 9472:9472 \
-p 9470:9470 \
-p 9471:9471 \
-v baradb_data:/data \
-e BARADB_LOG_LEVEL=info \
baradb:latest
```
## Порты
| Порт | Описание |
|------|----------|
| `9472` | Binary wire protocol |
| `9470` | HTTP/REST API |
| `9471` | WebSocket |
## Переменные окружения
| Переменная | По умолчанию | Описание |
|------------|--------------|----------|
| `BARADB_ADDRESS` | `0.0.0.0` | Адрес для прослушивания |
| `BARADB_PORT` | `9472` | Binary protocol порт |
| `BARADB_HTTP_PORT` | `9470` | HTTP порт |
| `BARADB_WS_PORT` | `9471` | WebSocket порт |
| `BARADB_DATA_DIR` | `/data` | Директория для данных |
| `BARADB_LOG_LEVEL` | `info` | Уровень логирования |
## Volumes
| Путь в контейнере | Описание |
|-------------------|----------|
| `/data` | Основная директория базы данных |
| `/data/server/wal` | Write-ahead log |
| `/data/server/sstables` | SSTable файлы |
## Production чеклист
- [ ] Создать TLS сертификаты в `./certs/`
- [ ] Установить сильный `BARADB_JWT_SECRET`
- [ ] Настроить файрвол правила
- [ ] Настроить регулярные бэкапы
- [ ] Проверить resource limits
- [ ] Настроить мониторинг (healthcheck, logs)
## TLS в Docker
1. Создайте сертификаты:
```bash
mkdir -p certs
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout certs/server.key -out certs/server.crt
```
2. Активируйте в `docker-compose.prod.yml`:
```yaml
environment:
- BARADB_TLS_ENABLED=true
- BARADB_CERT_FILE=/certs/server.crt
- BARADB_KEY_FILE=/certs/server.key
volumes:
- ./certs:/certs:ro
```
## Бэкап в Docker
```bash
# Ручной бэкап
docker exec baradb /app/backup backup --data-dir=/data
# Список бэкапов
docker exec baradb /app/backup list
# Восстановление
docker exec baradb /app/backup restore --input=backup_xxx.tar.gz
```
## Устранение проблем
### Контейнер не запускается
```bash
# Проверка логов
docker compose logs -f baradb
# Проверка статуса
docker compose ps
```
### Нет соединения с базой
```bash
# Проверка экспонированных портов
docker port baradb
# Проверка изнутри
docker exec baradb wget -qO- http://localhost:9470/health
```
### Permission denied на /data
Entrypoint скрипт автоматически создаёт директории и устанавливает правильные permissions. При проблемах:
```bash
docker exec baradb ls -la /data
docker exec baradb chown -R baradb:baradb /data
```