70 lines
2 KiB
Docker
70 lines
2 KiB
Docker
FROM python:3.14-slim
|
|
|
|
WORKDIR /app
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
tzdata \
|
|
xvfb \
|
|
xauth \
|
|
ca-certificates \
|
|
curl \
|
|
firefox-esr=140.8.0esr-1~deb13u1 \
|
|
fonts-noto \
|
|
fonts-noto-cjk \
|
|
fonts-dejavu \
|
|
fonts-liberation \
|
|
fonts-noto-color-emoji \
|
|
pulseaudio \
|
|
libgl1-mesa-dri \
|
|
libglu1-mesa \
|
|
zip && \
|
|
rm -rf /var/lib/apt/lists/* && \
|
|
fc-cache -fv && \
|
|
|
|
# Install geckodriver
|
|
RUN GECKO_VERSION=$(curl -s https://api.github.com/repos/mozilla/geckodriver/releases/latest | grep tag_name | cut -d'"' -f4) && \
|
|
curl -fsSL "https://github.com/mozilla/geckodriver/releases/download/${GECKO_VERSION}/geckodriver-${GECKO_VERSION}-linux64.tar.gz" | tar -xzf - -C /usr/local/bin && \
|
|
chmod +x /usr/local/bin/geckodriver
|
|
|
|
# Download uBlock Origin (latest)
|
|
RUN UBLOCK_VERSION=$(curl -s https://api.github.com/repos/gorhill/uBlock/releases/latest | grep tag_name | cut -d'"' -f4) && \
|
|
mkdir -p /extras/extensions && \
|
|
curl -fsSL -o /extras/extensions/ublock_origin.xpi \
|
|
"https://github.com/gorhill/uBlock/releases/download/${UBLOCK_VERSION}/uBlock0_${UBLOCK_VERSION}.firefox.signed.xpi"
|
|
|
|
COPY pyproject.toml uv.lock .
|
|
RUN pip install --no-cache-dir uv
|
|
RUN uv sync --frozen --no-dev
|
|
|
|
# Configure fontconfig for emoji support
|
|
|
|
COPY extras/patch_firefox.py .
|
|
RUN python3 ./patch_firefox.py
|
|
|
|
# Build Dark Reader extension (Selenium cleanup)
|
|
COPY extras/extension /tmp/extension
|
|
RUN cd /tmp/extension && zip -r /extras/extensions/dark-reader.xpi . && rm -rf /tmp/extension
|
|
|
|
ENV PYTHONUNBUFFERED=1
|
|
ENV PORT=80
|
|
ENV DATA_DIR=/data
|
|
ENV EXTRAS_DIR=/extras
|
|
ENV EMAILS_FILE=/data/emails.txt
|
|
ENV FIREFOX_BINARY=/usr/bin/firefox-esr
|
|
ENV GECKODRIVER_PATH=/usr/local/bin/geckodriver
|
|
|
|
VOLUME ["/data"]
|
|
|
|
EXPOSE 80
|
|
|
|
HEALTHCHECK --start-period=60s --start-interval=2s CMD \
|
|
test "$(curl -fsS "http://127.0.0.1:$PORT/health")" = "ok"
|
|
|
|
STOPSIGNAL SIGINT
|
|
|
|
COPY src .
|
|
|
|
COPY entrypoint.sh /entrypoint.sh
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
CMD ["/entrypoint.sh"]
|