42 lines
1.5 KiB
Docker
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"]
|