From 39ffee3db4d3e7d6905aaf28f609f148f24b2158 Mon Sep 17 00:00:00 2001 From: frarol96 Date: Sat, 16 Aug 2025 06:58:15 +0000 Subject: [PATCH] Update wrapper/docker-entrypoint.sh --- wrapper/docker-entrypoint.sh | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/wrapper/docker-entrypoint.sh b/wrapper/docker-entrypoint.sh index 667bb22..555b6ec 100644 --- a/wrapper/docker-entrypoint.sh +++ b/wrapper/docker-entrypoint.sh @@ -1,21 +1,20 @@ #!/usr/bin/env bash set -euo pipefail -# --- ENV defaults (can be overridden by compose/Portainer) --- +# --- ENV defaults (overridden by stack/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 +SHAI_DATA="${SHAI_DATA:-/data/data.json}" 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) --- +# --- fetch repo to /app/runtime/repo --- if [ ! -d /app/runtime/repo/.git ]; then echo "[Wrapper] Cloning repo..." git clone --depth=1 -b "$REPO_BRANCH" "$REPO_URL" /app/runtime/repo @@ -27,31 +26,31 @@ fi cd /app/runtime/repo -# --- Python deps if needed --- +# --- Python deps --- 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 +# --- Playwright browsers (idempotent) --- 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" +if python - <<'PY' >/dev/null 2>&1; then +import importlib, sys +sys.exit(0 if importlib.util.find_spec("playwright") else 1) +PY +then + # only install if chromium binary not found under the cache path + if ! find "$PLAYWRIGHT_BROWSERS_PATH" -type f -path "*/chrome-linux/chrome" -print -quit | grep -q . ; then + echo "[Wrapper] Preparing Playwright runtime in $PLAYWRIGHT_BROWSERS_PATH ..." + # if libs were not baked at build time, this helps (it is no-op if already satisfied) + python -m playwright install-deps chromium || true + python -m playwright install chromium fi fi -# --- Export env for child (don’t quote, avoid stray quotes) --- export SHAI_CONFIG SHAI_DATA -# --- Last sanity echo to help debugging --- echo "[Wrapper] Launching bot..." python -u bot.py