| #!/usr/bin/env bash |
| set -euo pipefail |
| cd /app |
|
|
| echo "=== ENTRYPOINT: printing env ===" |
| env | grep -E 'ZD_HEADLESS|USE_VIRTUAL_DISPLAY|NO_INITIAL_FETCH|PORT' || true |
|
|
| |
| if ! command -v google-chrome >/dev/null 2>&1; then |
| echo "Downloading google-chrome-stable..." |
| wget -q -O /tmp/chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb || { echo "Failed to download chrome"; } |
| apt-get update && apt-get install -y --no-install-recommends /tmp/chrome.deb || true |
| rm -f /tmp/chrome.deb |
| fi |
|
|
| |
| if command -v google-chrome >/dev/null 2>&1; then |
| CHROME_VER="$(google-chrome --product-version 2>/dev/null || echo unknown)" |
| echo "Google Chrome version: $CHROME_VER" |
| else |
| echo "google-chrome not found" |
| fi |
|
|
| |
| if command -v google-chrome >/dev/null 2>&1 && ! command -v chromedriver >/dev/null 2>&1; then |
| MAJOR="$(echo $CHROME_VER | cut -d. -f1)" |
| if [ -n "$MAJOR" ]; then |
| echo "Resolving chromedriver for Chrome major version: $MAJOR" |
| LATEST=$(curl -fsSL "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${MAJOR}" || true) |
| if [ -n "$LATEST" ]; then |
| echo "Downloading chromedriver v$LATEST" |
| curl -fsSL -o /tmp/chromedriver_linux64.zip "https://chromedriver.storage.googleapis.com/${LATEST}/chromedriver_linux64.zip" |
| unzip -o /tmp/chromedriver_linux64.zip -d /usr/local/bin |
| chmod +x /usr/local/bin/chromedriver |
| rm -f /tmp/chromedriver_linux64.zip |
| echo "chromedriver installed: $(/usr/local/bin/chromedriver --version 2>/dev/null || true)" |
| else |
| echo "Could not find chromedriver LATEST_RELEASE for $MAJOR" |
| fi |
| else |
| echo "Could not determine chrome major version" |
| fi |
| fi |
|
|
| |
| echo "=== Versions ===" |
| google-chrome --version || true |
| chromedriver --version || true |
| python3 --version |
| pip show cloudscraper || true |
|
|
| |
| echo "Starting uvicorn..." |
| exec uvicorn server:app --host 0.0.0.0 --port "${PORT}" --loop asyncio --workers 1 |