47 lines
1.3 KiB
Docker
47 lines
1.3 KiB
Docker
FROM python:3.11-slim
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive \
|
|
PYTHONDONTWRITEBYTECODE=1 \
|
|
PYTHONUNBUFFERED=1 \
|
|
TZ=Europe/Berlin
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
cron \
|
|
git \
|
|
ca-certificates \
|
|
tzdata \
|
|
util-linux \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN groupadd --system bot \
|
|
&& useradd --system --gid bot --home /app --shell /usr/sbin/nologin bot
|
|
|
|
WORKDIR /app
|
|
|
|
RUN mkdir -p /app/data \
|
|
&& chown -R bot:bot /app
|
|
|
|
COPY requirements.txt /app/requirements.txt
|
|
RUN pip install --no-cache-dir --upgrade pip \
|
|
&& pip install --no-cache-dir -r /app/requirements.txt
|
|
|
|
COPY --chown=bot:bot crontab/ /app/crontab/
|
|
COPY --chown=bot:bot entrypoint.sh /app/entrypoint.sh
|
|
COPY --chown=bot:bot run-bot.sh /app/run-bot.sh
|
|
COPY --chown=root:root run-bot.sh /usr/local/bin/run-bot.sh
|
|
COPY --chown=bot:bot src/ /app/src/
|
|
|
|
RUN chmod 0755 /app/entrypoint.sh \
|
|
&& chmod 0755 /app/crontab/install-cron.sh \
|
|
&& chmod 0755 /app/run-bot.sh \
|
|
&& chmod 0755 /usr/local/bin/run-bot.sh \
|
|
&& chmod 0644 /app/crontab/tenbackward.cron
|
|
|
|
ENV PYTHONPATH=/app/src
|
|
|
|
# Note: entrypoint.sh runs as root so it can install /etc/cron.d/tenbackward
|
|
# and exec cron -f. The cron-launched wrapper drops to the unprivileged
|
|
# `bot` user before invoking Python.
|
|
ENTRYPOINT ["/app/entrypoint.sh"]
|