Spaces:
Sleeping
Sleeping
| 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}" | |