40 lines
1.1 KiB
Docker
40 lines
1.1 KiB
Docker
FROM ghcr.io/astral-sh/uv:0.12.3-python3.11-trixie-slim AS builder
|
|
|
|
ENV UV_COMPILE_BYTECODE=1 \
|
|
UV_LINK_MODE=copy
|
|
|
|
WORKDIR /app
|
|
|
|
COPY pyproject.toml uv.lock README.md ./
|
|
COPY src ./src
|
|
RUN uv sync --frozen --no-dev --no-editable
|
|
|
|
FROM docker.io/library/python:3.11-slim-trixie AS runtime
|
|
|
|
# Debian security updates intentionally determine the exact package revisions.
|
|
# hadolint ignore=DL3008
|
|
RUN apt-get update \
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --yes ca-certificates ffmpeg \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& groupadd --gid 10001 app \
|
|
&& useradd --uid 10001 --gid app --home-dir /app --no-create-home app
|
|
|
|
WORKDIR /app
|
|
|
|
COPY --from=builder --chown=app:app /app/.venv /app/.venv
|
|
RUN mkdir --parents /app/data && chown app:app /app/data
|
|
|
|
ENV DATABASE_PATH=/app/data/favorites.sqlite3 \
|
|
PATH="/app/.venv/bin:$PATH" \
|
|
PYTHONDONTWRITEBYTECODE=1 \
|
|
PYTHONUNBUFFERED=1
|
|
|
|
VOLUME ["/app/data"]
|
|
|
|
USER 10001:10001
|
|
|
|
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
|
CMD ["python", "-c", "import os; os.kill(1, 0)"]
|
|
|
|
ENTRYPOINT ["tg-favorite-stickers"]
|