Spaces:
Paused
Paused
| # Fresh build 2025-04-23 v6 to force rebuild | |
| FROM ubuntu:20.04 | |
| # Set working directory | |
| WORKDIR /app | |
| # Set environment variables to avoid interactive prompts | |
| ENV DEBIAN_FRONTEND=noninteractive | |
| ENV PATH=/usr/local/bin:/usr/bin:/bin:/usr/lib/chromium-browser:$PATH | |
| ENV BUILD_ID=2025-04-23-v6 | |
| # Install system dependencies for Chrome and ChromeDriver | |
| 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 \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # Install Google Chrome | |
| 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) | |
| # Install ChromeDriver matching Chrome version | |
| RUN CHROME_VERSION=$(google-chrome --version | grep -oP '\d+\.\d+\.\d+') \ | |
| && 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) \ | |
| && wget -q https://storage.googleapis.com/chrome-for-testing-public/${CHROMEDRIVER_VERSION}/linux64/chromedriver-linux64.zip \ | |
| && unzip chromedriver-linux64.zip \ | |
| && mv chromedriver-linux64/chromedriver /usr/local/bin/ \ | |
| && chmod +x /usr/local/bin/chromedriver \ | |
| && rm chromedriver-linux64.zip \ | |
| || (echo "ChromeDriver installation failed" && exit 1) | |
| # Verify ChromeDriver installation | |
| RUN which chromedriver || (echo "chromedriver binary not found" && exit 1) | |
| RUN chromedriver --version || (echo "Cannot run chromedriver" && exit 1) | |
| # Clear Selenium cache to avoid outdated ChromeDriver | |
| RUN rm -rf /home/user/.cache/selenium | |
| # Copy requirements and install Python dependencies | |
| COPY requirements.txt . | |
| RUN pip3 install --no-cache-dir -r requirements.txt | |
| # Copy the app code | |
| COPY app.py . | |
| # Expose the port Gradio will run on | |
| EXPOSE 7860 | |
| # Run the Gradio app | |
| CMD ["python3", "app.py"] |