Add Docker deployment support with compose, entrypoint and docs

- Add Dockerfile (pre-built binary) and Dockerfile.source
- Add docker-compose.yml, docker-compose.prod.yml, docker-compose.override.yml
- Add docker-entrypoint.sh with non-root user support
- Add .dockerignore and helper scripts (scripts/docker-build.sh, scripts/docker-run.sh)
- Add docs/en/docker.md with full Docker guide
- Update docs/en/deployment.md and README.md
- Fix src/barabadb/core/config.nim to read BARADB_ADDRESS, BARADB_PORT, BARADB_DATA_DIR from env
- Fix src/barabadb/core/httpserver.nim missing wire import
This commit is contained in:
2026-05-06 23:58:43 +03:00
parent 9b7ed1fca8
commit b6cdf8c88e
14 changed files with 764 additions and 80 deletions
+41
View File
@@ -0,0 +1,41 @@
#!/bin/sh
set -e
# BaraDB Docker Entrypoint
# Създава нужните директории и стартира сървъра с правилни настройки
BARADB_DATA_DIR="${BARADB_DATA_DIR:-/data}"
BARADB_LOG_LEVEL="${BARADB_LOG_LEVEL:-info}"
BARADB_PORT="${BARADB_PORT:-9472}"
# Създаваме data директорията ако не съществува
if [ ! -d "$BARADB_DATA_DIR" ]; then
echo "Creating data directory: $BARADB_DATA_DIR"
mkdir -p "$BARADB_DATA_DIR"
fi
# Създаваме поддиректории за WAL и SSTables ако не съществуват
mkdir -p "$BARADB_DATA_DIR/server"
mkdir -p "$BARADB_DATA_DIR/server/wal"
mkdir -p "$BARADB_DATA_DIR/server/sstables"
# Създаваме symlink от /app/data към /data ако липсва
if [ ! -L "/app/data" ]; then
ln -s "$BARADB_DATA_DIR" /app/data
fi
# Правим директорията собственост на baradb потребителя ако сме root
if [ "$(id -u)" = "0" ]; then
chown -R baradb:baradb "$BARADB_DATA_DIR"
# Стартираме като baradb потребител (gosu за Debian, su-exec за Alpine)
if command -v gosu >/dev/null 2>&1; then
exec gosu baradb "$@"
elif command -v su-exec >/dev/null 2>&1; then
exec su-exec baradb "$@"
else
echo "Warning: neither gosu nor su-exec found, running as root"
exec "$@"
fi
else
exec "$@"
fi