b6cdf8c88e
- 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
42 lines
1.4 KiB
Bash
Executable File
42 lines
1.4 KiB
Bash
Executable File
#!/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
|