| | |
| | FROM ubuntu:20.04 |
| |
|
| | |
| | WORKDIR /app |
| |
|
| | |
| | ENV DEBIAN_FRONTEND=noninteractive |
| | ENV PATH=/usr/local/bin:/usr/bin:/bin:/usr/lib/chromium-browser:$PATH |
| | ENV BUILD_ID=2025-04-23-v13 |
| |
|
| | |
| | RUN useradd -m -u 1000 -s /bin/bash user \ |
| | && chown -R user:user /app |
| |
|
| | |
| | RUN apt-get update && apt-get install -y \ |
| | wget \ |
| | unzip \ |
| | curl \ |
| | python3 \ |
| | python3-pip \ |
| | libglib2.0-0 \ |
| | libnss3 \ |
| | libgconf-2-4 \ |
| | libfontconfig1 \ |
| | libxrender1 \ |
| | libxtst6 \ |
| | libxi6 \ |
| | libgbm-dev \ |
| | libasound2 \ |
| | libatk1.0-0 \ |
| | libatk-bridge2.0-0 \ |
| | libpango-1.0-0 \ |
| | libcairo2 \ |
| | libgtk-3-0 \ |
| | libcups2 \ |
| | libxss1 \ |
| | libappindicator3-1 \ |
| | libindicator3-7 \ |
| | libstdc++6 \ |
| | zlib1g \ |
| | libncurses5 \ |
| | libx11-6 \ |
| | libxext6 \ |
| | libxcomposite1 \ |
| | libxrandr2 \ |
| | libgcc1 \ |
| | libxkbcommon0 \ |
| | libxdamage1 \ |
| | libxfixes3 \ |
| | libxcursor1 \ |
| | libxinerama1 \ |
| | libxxf86vm1 \ |
| | libatk-adaptor \ |
| | libgdk-pixbuf2.0-0 \ |
| | xvfb \ |
| | libdbus-1-3 \ |
| | libdbus-glib-1-2 \ |
| | && rm -rf /var/lib/apt/lists/* |
| |
|
| | |
| | RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \ |
| | && echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list \ |
| | && apt-get update \ |
| | && apt-get install -y google-chrome-stable \ |
| | && rm -rf /var/lib/apt/lists/* \ |
| | || (echo "Chrome installation failed" && exit 1) |
| | |
| | # Verify Chrome installation and binary location |
| | RUN which google-chrome || (echo "google-chrome binary not found" && exit 1) |
| | RUN google-chrome --version || (echo "Cannot run google-chrome" && exit 1) |
| | RUN ls -l /usr/bin/google-chrome || echo "google-chrome not in /usr/bin" |
| | |
| | # Install ChromeDriver with debugging and fallback for Chrome 135 |
| | RUN echo "Fetching Chrome version..." \ |
| | && CHROME_VERSION=$(google-chrome --version | grep -oP '\d+\.\d+\.\d+' || echo "Failed to get Chrome version") \ |
| | && echo "Chrome version: $CHROME_VERSION" \ |
| | && if [ -z "$CHROME_VERSION" ]; then \ |
| | echo "Using fallback ChromeDriver version 135.0.7049.114" \ |
| | && CHROMEDRIVER_VERSION="135.0.7049.114"; \ |
| | else \ |
| | echo "Fetching ChromeDriver version for Chrome $CHROME_VERSION..." \ |
| | && CHROMEDRIVER_VERSION=$(curl -sS https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions-with-downloads.json | grep -oP '"version":"${CHROME_VERSION}\.[0-9]+"' | grep -oP '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | head -n 1 || echo "Failed to fetch ChromeDriver version") \ |
| | && echo "ChromeDriver version: $CHROMEDRIVER_VERSION" \ |
| | && if [ -z "$CHROMEDRIVER_VERSION" ]; then \ |
| | echo "Using fallback ChromeDriver version 135.0.7049.114" \ |
| | && CHROMEDRIVER_VERSION="135.0.7049.114"; \ |
| | fi; \ |
| | fi \ |
| | && echo "Downloading ChromeDriver $CHROMEDRIVER_VERSION..." \ |
| | && wget -q https://storage.googleapis.com/chrome-for-testing-public/${CHROMEDRIVER_VERSION}/linux64/chromedriver-linux64.zip \ |
| | && echo "Unzipping ChromeDriver..." \ |
| | && unzip chromedriver-linux64.zip \ |
| | && echo "Moving ChromeDriver to /usr/local/bin..." \ |
| | && mv chromedriver-linux64/chromedriver /usr/local/bin/ \ |
| | && chmod +x /usr/local/bin/chromedriver \ |
| | && rm chromedriver-linux64.zip \ |
| | || (echo "ChromeDriver installation failed" && exit 1) |
| | |
| | |
| | RUN which chromedriver || (echo "chromedriver binary not found" && exit 1) |
| | RUN chromedriver --version || (echo "Cannot run chromedriver" && exit 1) |
| | RUN ls -l /usr/local/bin/chromedriver || echo "chromedriver not in /usr/local/bin" |
| | |
| | |
| | RUN echo "Testing ChromeDriver..." \ |
| | && chromedriver --version \ |
| | && google-chrome --version \ |
| | && (xvfb-run -a google-chrome --headless=new --no-sandbox --disable-dev-shm-usage --disable-gpu --version || echo "Headless Chrome test failed") |
| | |
| | |
| | RUN rm -rf /home/user/.cache/selenium |
| | |
| | |
| | COPY app/requirements.txt . |
| | RUN pip3 install --no-cache-dir -r requirements.txt |
| | |
| | |
| | COPY app/app.py . |
| | |
| | |
| | USER user |
| | |
| | |
| | EXPOSE 7860 |
| | |
| | |
| | HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \ |
| | CMD curl -f http://localhost:7860/ || exit 1 |
| |
|
| | |
| | CMD ["python3", "app.py"] |