#!/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}"