ragtiquicIA / scripts /run_docker_space_like.sh
Santiago Casas
working perfectly on docker locally
df81c4f
#!/usr/bin/env bash
set -euo pipefail
# Run the app via Docker similar to HF Spaces.
#
# Defaults:
# - Uses your locally cloned dataset checkout (no re-clone) by mounting it.
# - Uses .env.docker if present.
#
# Override via env vars, e.g.:
# USE_LOCAL_DATASET=0 PORT=18502 ./scripts/run_docker_space_like.sh
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
IMAGE="${IMAGE:-ragtiquicia:local}"
PORT="${PORT:-8501}"
BUILD_IMAGE="${BUILD_IMAGE:-1}"
DETACH="${DETACH:-0}"
CONTAINER_NAME="${CONTAINER_NAME:-ragtiquicia-app}"
USE_LOCAL_DATASET="${USE_LOCAL_DATASET:-1}"
LOCAL_DATASET_DIR="${LOCAL_DATASET_DIR:-/home/casas/AI/politicaldatabase}"
ENV_FILE="${ENV_FILE:-${ROOT_DIR}/.env.docker}"
HF_DATASET_DIR_IN_CONTAINER="${HF_DATASET_DIR_IN_CONTAINER:-/dbs/politicaldatabase}"
HF_DB_SUBDIR="${HF_DB_SUBDIR:-dbs/knowledge-graph}"
HF_DATASET_REPO_URL="${HF_DATASET_REPO_URL:-https://huggingface.co/datasets/santicas/politicaldatabase}"
HF_DATASET_UPDATE="${HF_DATASET_UPDATE-}"
HF_DATASET_HYDRATE="${HF_DATASET_HYDRATE-}"
if ! command -v docker >/dev/null 2>&1; then
echo "Docker is required but not installed." >&2
exit 1
fi
run_args=(-p "${PORT}:8501")
if [ "${DETACH}" = "1" ]; then
# Reuse container name if it already exists.
if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
docker rm -f "${CONTAINER_NAME}" >/dev/null 2>&1 || true
fi
run_args+=(--name "${CONTAINER_NAME}" -d)
else
run_args+=(--rm)
fi
if [ -f "${ENV_FILE}" ]; then
run_args+=(--env-file "${ENV_FILE}")
else
echo "Warning: env file not found: ${ENV_FILE}" >&2
echo "Set ENV_FILE=... or export BLABLADOR_API_KEY/OPENAI_API_KEY." >&2
fi
if [ "${USE_LOCAL_DATASET}" = "1" ]; then
if [ ! -d "${LOCAL_DATASET_DIR}" ]; then
echo "LOCAL_DATASET_DIR not found: ${LOCAL_DATASET_DIR}" >&2
echo "Set LOCAL_DATASET_DIR=... or USE_LOCAL_DATASET=0." >&2
exit 1
fi
run_args+=(
-e "HF_DATASET_DIR=${HF_DATASET_DIR_IN_CONTAINER}"
-e "HF_DB_SUBDIR=${HF_DB_SUBDIR}"
-e "HF_DATASET_UPDATE=${HF_DATASET_UPDATE:-0}"
-e "HF_DATASET_HYDRATE=${HF_DATASET_HYDRATE:-0}"
-v "${LOCAL_DATASET_DIR}:${HF_DATASET_DIR_IN_CONTAINER}"
)
else
run_args+=(
-e "HF_DATASET_REPO_URL=${HF_DATASET_REPO_URL}"
-e "HF_DATASET_DIR=${HF_DATASET_DIR_IN_CONTAINER}"
-e "HF_DB_SUBDIR=${HF_DB_SUBDIR}"
-e "HF_DATASET_UPDATE=${HF_DATASET_UPDATE:-1}"
-e "HF_DATASET_HYDRATE=${HF_DATASET_HYDRATE:-1}"
)
fi
if [ "${BUILD_IMAGE}" = "1" ]; then
docker build -t "${IMAGE}" "${ROOT_DIR}"
fi
echo "Running: ${IMAGE}"
echo "URL: http://127.0.0.1:${PORT}"
if [ "${DETACH}" = "1" ]; then
cid=$(docker run "${run_args[@]}" "${IMAGE}")
echo "Container: ${CONTAINER_NAME} (${cid})"
echo "Logs: docker logs -f ${CONTAINER_NAME}"
exit 0
fi
exec docker run "${run_args[@]}" "${IMAGE}"