|
|
|
|
|
FROM python:3.11-slim |
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
ENV DISPLAY=:99 |
|
|
RUN mkdir -p /tmp/.xvfb && chmod 1777 /tmp/.xvfb |
|
|
WORKDIR /app |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
COPY requirements.txt . |
|
|
RUN pip install --no-cache-dir -r requirements.txt |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
COPY 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' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RUN echo "Chrome version:" && google-chrome-stable --version \ |
|
|
&& echo "ChromeDriver version:" && chromedriver --version |
|
|
|
|
|
|
|
|
EXPOSE 7860 |
|
|
EXPOSE 9222 |
|
|
|
|
|
|
|
|
HEALTHCHECK --interval=30s --timeout=30s \ |
|
|
CMD curl -f http://localhost:7860 || exit 1 |
|
|
|
|
|
|
|
|
COPY . . |
|
|
|
|
|
|
|
|
CMD ["sh", "-c", "Xvfb :99 -screen 0 1024x768x24 & python app.py"] |
|
|
|