Files
marker_api/deploy-podman.sh
oval 33997778f6 Prepare for public git: .gitignore, .env, sanitized configs
- Add .gitignore excluding .env, __pycache__, test_files (copyrighted PDFs),
  session logs, marker/ submodule, and other generated/private files
- Add .env with local config (gitignored); expand .env.example with all
  supported environment variables
- docker-compose.yml: all hardcoded values now use default pattern
- Containerfile: install marker-pdf from GitHub instead of local submodule;
  fix AMD_COMPUTE default to false; sanitize default OLLAMA_HOST
- Remove marker/ submodule from git tracking (keep local checkout via .gitignore)
- Remove session transcript and copyrighted ENISA PDFs from git tracking
- Sanitize local IPs in README, kubernetes deployment, deploy-podman.sh
- Fix hardcoded paths in convert_both.py and compare_conversions.py
- Update requirements.txt to reference GitHub instead of local --editable
2026-06-08 12:29:43 +02:00

78 lines
2.5 KiB
Bash
Executable File

#!/usr/bin/env bash
# ==================================================
# deploy-podman.sh -- example local podman deployment
# (customize for your host before use)
# ==================================================
set -euo pipefail
PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
IMAGE_NAME="marker-api"
IMAGE_TAG="latest"
PORT="${PORT:-8000}"
ENV_FILE="${PROJECT_DIR}/.env"
echo "========================================="
echo " marker-api -- Podman deployment"
echo "========================================="
echo ""
# ---- Load env ----
if [[ -f "$ENV_FILE" ]]; then
echo "Loading .env from ${ENV_FILE}"
set -a; source "$ENV_FILE"; set +a
else
echo "No .env found, using defaults"
fi
# ---- Build ----
echo ""
echo ">> Building image ${IMAGE_NAME}:${IMAGE_TAG} ..."
podman build -t "${IMAGE_NAME}:${IMAGE_TAG}" -f "${PROJECT_DIR}/Containerfile" "${PROJECT_DIR}"
# ---- Stop previous container ----
if podman ps --format '{{.Names}}' | grep -q "^${IMAGE_NAME}$"; then
echo ">> Stopping existing container '${IMAGE_NAME}' ..."
podman stop "${IMAGE_NAME}"
podman rm "${IMAGE_NAME}"
fi
# ---- Run ----
echo ""
echo ">> Starting container '${IMAGE_NAME}' on port ${PORT} ..."
podman run -d \
--name "${IMAGE_NAME}" \
--network host \
-p "${PORT}:${PORT}" \
-v /dev/kfd:/dev/kfd \
-v /dev/dri:/dev/dri \
-e OLLAMA_HOST="${OLLAMA_HOST:-http://localhost:11434}" \
-e DEESEEK_OCR_MODEL="${DEESEEK_OCR_MODEL:-deepseek-ocr}" \
-e AMD_COMPUTE="${AMD_COMPUTE:-true}" \
-e TORCH_DEVICE="${TORCH_DEVICE:-rocm}" \
-e MODEL_DTYPE="${MODEL_DTYPE:-float32}" \
-e PORT="${PORT}" \
-e HOST=0.0.0.0 \
-e GUNICORN_WORKERS="${GUNICORN_WORKERS:-2}" \
-e GUNICORN_THREADS="${GUNICORN_THREADS:-4}" \
-e GUNICORN_TIMEOUT="${GUNICORN_TIMEOUT:-300}" \
-v "${PROJECT_DIR}/conversion_results:/app/conversion_results:rw" \
--restart unless-stopped \
"${IMAGE_NAME}:${IMAGE_TAG}"
echo ""
echo ">> Waiting 60s for models to load ..."
sleep 60
# ---- Health check ----
if curl -sf http://localhost:${PORT}/health | grep -q '"status"'; then
echo "✅ marker-api is UP and healthy!"
echo " Swagger UI: http://localhost:${PORT}/docs"
echo " API docs: http://localhost:${PORT}/marker"
echo " Health: http://localhost:${PORT}/health"
else
echo "⚠️ Container running but health check may fail during model loading."
echo " Check logs: podman logs -f ${IMAGE_NAME}"
echo " Container: podman ps | grep ${IMAGE_NAME}"
fi