shaiwatcher/wrapper/docker-entrypoint.sh

58 lines
2.2 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
set -euo pipefail
# --- ENV defaults (can be overridden by compose/Portainer) ---
REPO_URL="${REPO_URL:-https://git.example.com/owner/shaiwatcher.git}"
REPO_BRANCH="${REPO_BRANCH:-main}"
SHAI_CONFIG="${SHAI_CONFIG:-/config/settings.conf}"
SHAI_DATA="${SHAI_DATA:-/data/data.json}" # we also honor SHAI_DATA_FILE in the bot
echo "[Wrapper] Repo: $REPO_URL @ $REPO_BRANCH"
echo "[Wrapper] SHAI_CONFIG: $SHAI_CONFIG"
echo "[Wrapper] SHAI_DATA: $SHAI_DATA"
# --- Ensure volumes/dirs exist ---
mkdir -p "$(dirname "$SHAI_CONFIG")" /data /app/runtime
touch "$SHAI_CONFIG"
# --- Fetch bot code fresh on every boot (or cache in /app/runtime) ---
if [ ! -d /app/runtime/repo/.git ]; then
echo "[Wrapper] Cloning repo..."
git clone --depth=1 -b "$REPO_BRANCH" "$REPO_URL" /app/runtime/repo
else
echo "[Wrapper] Updating repo..."
git -C /app/runtime/repo fetch origin "$REPO_BRANCH" --depth=1
git -C /app/runtime/repo reset --hard "origin/$REPO_BRANCH"
fi
cd /app/runtime/repo
# --- Python deps if needed ---
if [ -f requirements.txt ]; then
echo "[Wrapper] Installing requirements..."
pip install --no-cache-dir -r requirements.txt
fi
# Keep Playwright browsers in a persistent volume
export PLAYWRIGHT_BROWSERS_PATH="${PLAYWRIGHT_BROWSERS_PATH:-/cache/pw-browsers}"
mkdir -p "$PLAYWRIGHT_BROWSERS_PATH"
# If Playwright is installed, make sure Chromium + deps are installed too
if python -c "import playwright" >/dev/null 2>&1; then
if [ ! -d "$PLAYWRIGHT_BROWSERS_PATH" ] || [ -z "$(ls -A "$PLAYWRIGHT_BROWSERS_PATH" 2>/dev/null)" ]; then
echo "[Wrapper] Installing Playwright Chromium (with deps) to $PLAYWRIGHT_BROWSERS_PATH ..."
# Prefer the combined install; fall back to plain install if --with-deps isn't available
python -m playwright install --with-deps chromium || \
(python -m playwright install-deps chromium && python -m playwright install chromium)
else
echo "[Wrapper] Playwright browser cache present at $PLAYWRIGHT_BROWSERS_PATH"
fi
fi
# --- Export env for child (dont quote, avoid stray quotes) ---
export SHAI_CONFIG SHAI_DATA
# --- Last sanity echo to help debugging ---
echo "[Wrapper] Launching bot..."
python -u bot.py