Files
backup-tool/Dockerfile

42 lines
1.5 KiB
Docker

# syntax=docker/dockerfile:1
# Pinned by manifest digest; update tag and digest together.
FROM python:3.12.11-slim-bookworm@sha256:519591d6871b7bc437060736b9f7456b8731f1499a57e22e6c285135ae657bf7 AS builder
ENV PIP_DISABLE_PIP_VERSION_CHECK=1 \
PIP_NO_CACHE_DIR=1
WORKDIR /build
COPY backend/pyproject.toml ./pyproject.toml
COPY backend/src ./src
RUN python -m pip install --upgrade pip==25.3 && \
python -m pip wheel --wheel-dir /wheels .
FROM python:3.12.11-slim-bookworm@sha256:519591d6871b7bc437060736b9f7456b8731f1499a57e22e6c285135ae657bf7 AS runtime
ENV PATH="/opt/venv/bin:${PATH}" \
PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
BACKUP_TOOL_ALEMBIC_ROOT=/app
RUN groupadd --gid 10001 backup-tool && \
useradd --uid 10001 --gid backup-tool --create-home --home-dir /home/backup-tool \
--shell /usr/sbin/nologin backup-tool && \
python -m venv /opt/venv && \
install --directory --owner=backup-tool --group=backup-tool --mode=0750 \
/var/lib/backup-tool \
/var/lib/backup-tool/repositories \
/var/lib/backup-tool/restores \
/run/backup-tool
COPY --from=builder /wheels /wheels
RUN python -m pip install --no-index --find-links=/wheels backup-tool==2.0.0.dev0 && \
rm -rf /wheels
COPY --chown=backup-tool:backup-tool backend/alembic.ini /app/alembic.ini
COPY --chown=backup-tool:backup-tool backend/alembic /app/alembic
WORKDIR /app
USER backup-tool:backup-tool
ENTRYPOINT ["backup-tool"]
CMD ["web"]