64 lines
1.5 KiB
Docker
64 lines
1.5 KiB
Docker
FROM python:3.14-slim
|
|
|
|
WORKDIR /app
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
tzdata \
|
|
ca-certificates \
|
|
curl \
|
|
fonts-noto \
|
|
fonts-noto-cjk \
|
|
fonts-dejavu \
|
|
fonts-liberation \
|
|
fonts-noto-color-emoji \
|
|
zip && \
|
|
rm -rf /var/lib/apt/lists/* && \
|
|
fc-cache -fv
|
|
|
|
# Download uBlock Origin (latest)
|
|
ARG UBLOCK_VERSION=1.69.0
|
|
RUN 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
|
|
|
|
# Install Patchright browsers (Chrome)
|
|
RUN PLAYWRIGHT_BROWSERS_PATH=/opt/patchright-browsers \
|
|
/app/.venv/bin/patchright install chrome
|
|
|
|
# Configure fontconfig for emoji support
|
|
|
|
# Build Dark Reader extension
|
|
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 TARGET_SIZE=5
|
|
ENV POLL_INTERVAL=30
|
|
ENV MIN_BALANCE=0
|
|
ENV DATA_DIR=/data
|
|
ENV EXTRAS_DIR=/extras
|
|
ENV EMAILS_FILE=/data/emails.txt
|
|
ENV BROWSER_CHANNEL=chrome
|
|
ENV HEADLESS=0
|
|
ENV PLAYWRIGHT_BROWSERS_PATH=/opt/patchright-browsers
|
|
|
|
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"]
|