File size: 5,028 Bytes
39c82d4 29c235c 39c82d4 b16a042 bab8f6d 0f4bc68 bab8f6d 7b5402d b16a042 faa1ee3 9bca023 2ec410f 39c82d4 de03d4b 17e9f19 39c82d4 d8dae77 219c282 17e9f19 4d889a8 17e9f19 9bca023 17e9f19 4d889a8 17e9f19 4d889a8 39c82d4 17e9f19 39c82d4 17e9f19 39c82d4 1f8e9f5 b09deac 29c235c d8dae77 810e0e0 b5aebe0 d11461c b5aebe0 d11461c b5aebe0 8214c69 d11461c b5aebe0 8214c69 b5aebe0 8214c69 b5aebe0 d8dae77 d11461c 8214c69 1f8e9f5 39c82d4 8763181 9bca023 8763181 9bca023 920a576 39c82d4 17e9f19 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
FROM python:3.11-slim
# Install system dependencies
RUN apt-get update && apt-get install -y \
wget \
curl \
fonts-dejavu \
ca-certificates \
fonts-liberation \
xvfb \
unzip \
dbus-x11 \
gnupg \
libnss3 \
libxss1 \
libasound2 \
libatk-bridge2.0-0 \
libgtk-3-0 \
libdrm2 \
libgbm1 \
libu2f-udev \
xdg-utils \
--no-install-recommends \
&& 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 && google-chrome-stable --version \
&& rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get install -y jq
# Set up Xvfb and working directory
ENV DISPLAY=:99
RUN mkdir -p /tmp/.xvfb && chmod 1777 /tmp/.xvfb
WORKDIR /app
# Configure environment
ENV MPLCONFIGDIR=/tmp/matplotlib \
XDG_CACHE_HOME=/tmp/.cache \
XDG_CONFIG_HOME=/tmp/.config \
XDG_DATA_HOME=/tmp/.local/share \
FONTCONFIG_PATH=/etc/fonts \
FONTCONFIG_FILE=/etc/fonts/fonts.conf \
FONTCONFIG_CACHE=/tmp/fontconfig \
GRADIO_TEMP_DIR=/tmp/gradio \
CHROMEDRIVER_PATH=/usr/local/bin/chromedriver \
CHROME_BIN=/usr/bin/google-chrome-stable
# Create directories with correct permissions
RUN mkdir -p ${XDG_CACHE_HOME} && chmod 777 ${XDG_CACHE_HOME} \
&& mkdir -p ${XDG_CONFIG_HOME} && chmod 777 ${XDG_CONFIG_HOME} \
&& mkdir -p ${XDG_DATA_HOME} && chmod 777 ${XDG_DATA_HOME} \
&& mkdir -p ${FONTCONFIG_CACHE} && chmod 777 ${FONTCONFIG_CACHE} \
&& mkdir -p /app/flagged && chmod 777 /app/flagged \
&& mkdir -p /tmp/.local/share/applications \
&& touch /tmp/.local/share/applications/mimeapps.list \
&& chmod 777 /tmp/.local/share/applications/mimeapps.list
# Install Python dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Install ChromeDriver - Manual version specification
# Check Chrome version first and then install matching ChromeDriver
# RUN CHROME_VERSION=$(google-chrome-stable --version | awk '{print $3}' | cut -d'.' -f1) \
# && echo "Chrome major version: $CHROME_VERSION" \
# && CHROME_DRIVER_VERSION=$(wget -qO- https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$CHROME_VERSION) \
# && echo "Installing ChromeDriver version: $CHROME_DRIVER_VERSION" \
# && wget -q https://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip \
# && unzip chromedriver_linux64.zip \
# && rm chromedriver_linux64.zip \
# && mv chromedriver /usr/local/bin/ \
# && chmod +x /usr/local/bin/chromedriver
# Hardcoded ChromeDriver version (replace with the version you need)
# RUN wget -q https://huggingface.co/datasets/Juna190825/chromedriver/resolve/main/chromedriver \
# && mv chromedriver /usr/local/bin/ \
# && chmod +x /usr/local/bin/chromedriver
COPY install_chromedriver.sh /tmp/install_chromedriver.sh
# RUN apt-get install -y dos2unix && dos2unix /tmp/install_chromedriver.sh
# RUN bash /tmp/install_chromedriver.sh && /tmp/install_chromedriver.sh
RUN bash -c '\
CHROME_VERSION=$(google-chrome-stable --version | awk "{print \$3}" | cut -d"." -f1); \
echo "Detected Chrome major version: $CHROME_VERSION"; \
if [ "$CHROME_VERSION" -ge 115 ]; then \
CHROMEDRIVER_VERSION=$(curl -s https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions-with-downloads.json | \
jq -r ".channels.Stable.downloads.chromedriver[0].version"); \
DRIVER_URL=$(curl -s https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions-with-downloads.json | \
jq -r ".channels.Stable.downloads.chromedriver[0].url"); \
echo "Using ChromeDriver version: $CHROMEDRIVER_VERSION from $DRIVER_URL"; \
wget -q "$DRIVER_URL" -O chromedriver.zip; \
unzip chromedriver.zip; \
mv chromedriver-linux64/chromedriver /usr/local/bin/; \
else \
CHROMEDRIVER_VERSION=$(wget -qO- https://chromedriver.storage.googleapis.com/LATEST_RELEASE_"$CHROME_VERSION"); \
echo "Using legacy ChromeDriver version: $CHROMEDRIVER_VERSION"; \
wget -q https://chromedriver.storage.googleapis.com/"$CHROMEDRIVER_VERSION"/chromedriver_linux64.zip -O chromedriver.zip; \
unzip chromedriver.zip; \
mv chromedriver /usr/local/bin/; \
fi; \
rm -rf chromedriver.zip chromedriver-linux64; \
chmod +x /usr/local/bin/chromedriver'
# Verify installations
RUN echo "Chrome version:" && google-chrome-stable --version \
&& echo "ChromeDriver version:" && chromedriver --version
# Ensure proper port exposure
EXPOSE 7860
EXPOSE 9222
# Add health check
HEALTHCHECK --interval=30s --timeout=30s \
CMD curl -f http://localhost:7860 || exit 1
# Copy application
COPY . .
# Start script
CMD ["sh", "-c", "Xvfb :99 -screen 0 1024x768x24 & python app.py"]
|