1
0
Fork 0
megacode/Dockerfile

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"]