2025-06-05 18:33:21 -05:00
|
|
|
|
FROM python:3.12-bookworm AS base
|
2024-04-05 14:47:56 -05:00
|
|
|
|
|
|
|
|
|
LABEL org.opencontainers.image.source="https://github.com/privacyguides/privacyguides.org"
|
|
|
|
|
|
2025-06-05 18:33:21 -05:00
|
|
|
|
# Setup environment
|
|
|
|
|
ENV LANG=C.UTF-8
|
|
|
|
|
ENV LC_ALL=C.UTF-8
|
|
|
|
|
ENV PYTHONDONTWRITEBYTECODE=1
|
|
|
|
|
ENV PYTHONFAULTHANDLER=1
|
2024-04-05 14:47:56 -05:00
|
|
|
|
|
2025-06-05 18:33:21 -05:00
|
|
|
|
####################################################
|
|
|
|
|
# Stage: python-deps
|
|
|
|
|
# Install pipenv and compilation dependencies
|
|
|
|
|
####################################################
|
2024-04-05 14:47:56 -05:00
|
|
|
|
FROM base AS python-deps
|
|
|
|
|
|
2025-06-05 18:33:21 -05:00
|
|
|
|
# Install pipenv
|
|
|
|
|
RUN pip install --no-cache-dir pipenv
|
|
|
|
|
|
|
|
|
|
# Install build tools and libraries needed to compile any Python packages
|
|
|
|
|
RUN apt-get update && \
|
|
|
|
|
apt-get install -y --no-install-recommends \
|
|
|
|
|
gcc \
|
|
|
|
|
libffi-dev \
|
|
|
|
|
build-essential \
|
|
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
2024-04-05 14:47:56 -05:00
|
|
|
|
|
2025-06-05 18:33:21 -05:00
|
|
|
|
# Copy Pipfile, Pipfile.lock, and any local modules needed for dependency resolution
|
2024-04-05 14:47:56 -05:00
|
|
|
|
COPY modules/mkdocs-material ./modules/mkdocs-material
|
|
|
|
|
COPY Pipfile .
|
|
|
|
|
COPY Pipfile.lock .
|
2025-06-05 18:33:21 -05:00
|
|
|
|
|
|
|
|
|
# Install all Python dependencies into a project‐local virtual environment at /.venv
|
2024-04-05 14:47:56 -05:00
|
|
|
|
RUN PIPENV_VENV_IN_PROJECT=1 pipenv install --deploy
|
|
|
|
|
|
2025-06-05 18:33:21 -05:00
|
|
|
|
####################################################
|
|
|
|
|
# Stage: runtime
|
|
|
|
|
# Install runtime dependencies and copy runtime artifacts
|
|
|
|
|
####################################################
|
2024-04-05 14:47:56 -05:00
|
|
|
|
FROM base AS runtime
|
|
|
|
|
|
2025-06-05 18:33:21 -05:00
|
|
|
|
# Install runtime packages (GTK/Cairo, image processing libraries, Git, etc.)
|
|
|
|
|
RUN apt-get update && \
|
|
|
|
|
apt-get install -y --no-install-recommends \
|
|
|
|
|
libcairo2-dev \
|
|
|
|
|
libfreetype6-dev \
|
|
|
|
|
git \
|
|
|
|
|
libjpeg-dev \
|
|
|
|
|
libpng-dev \
|
|
|
|
|
openssh-client \
|
|
|
|
|
pngquant \
|
|
|
|
|
tini \
|
|
|
|
|
zlib1g-dev \
|
|
|
|
|
libffi-dev \
|
|
|
|
|
bash \
|
|
|
|
|
caddy \
|
|
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
2024-04-05 14:47:56 -05:00
|
|
|
|
|
2025-06-05 18:33:21 -05:00
|
|
|
|
# Copy virtual environment and local mkdocs-material module from python-deps stage
|
2024-04-05 14:47:56 -05:00
|
|
|
|
COPY --from=python-deps /.venv /.venv
|
|
|
|
|
COPY --from=python-deps /modules/mkdocs-material /modules/mkdocs-material
|
|
|
|
|
|
2025-06-05 18:33:21 -05:00
|
|
|
|
# Ensure the virtual environment’s bin directory is first in PATH
|
|
|
|
|
ENV PATH="/.venv/bin:$PATH"
|
2024-04-05 14:47:56 -05:00
|
|
|
|
|
|
|
|
|
HEALTHCHECK NONE
|
|
|
|
|
|
2025-06-05 18:33:21 -05:00
|
|
|
|
# Entry point script and default cmd for running mkdocs
|
|
|
|
|
ENTRYPOINT ["/bin/bash"]
|