# Use an official Python runtime as a parent image FROM python:3.9-slim # Set working directory WORKDIR /app # Install system dependencies for Chrome and ChromeDriver RUN apt-get update && apt-get install -y \ wget \ unzip \ curl \ 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 \ && 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/* # Install ChromeDriver matching Chrome version RUN CHROME_VERSION=$(google-chrome --version | grep -oP '\d+\.\d+\.\d+') \ && CHROMEDRIVER_VERSION=$(curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROME_VERSION}) \ && wget -q https://chromedriver.storage.googleapis.com/${CHROMEDRIVER_VERSION}/chromedriver_linux64.zip \ && unzip chromedriver_linux64.zip \ && mv chromedriver /usr/local/bin/ \ && chmod +x /usr/local/bin/chromedriver \ && rm chromedriver_linux64.zip # Copy requirements and install Python dependencies COPY requirements.txt . RUN pip 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 ["python", "app.py"]