| 
									
										
										
										
											2025-06-10 13:43:11 -06:00
										 |  |  |  | FROM python:3.12-slim-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-10 13:43:11 -06:00
										 |  |  |  | ####################################################
 | 
					
						
							|  |  |  |  | # Stage: nodejs-deps
 | 
					
						
							|  |  |  |  | # Install nodejs/npm and compilation dependencies
 | 
					
						
							|  |  |  |  | ####################################################
 | 
					
						
							|  |  |  |  | FROM node:24-bookworm-slim AS nodejs-deps
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | RUN npm i -g all-contributors-cli
 | 
					
						
							|  |  |  |  | RUN npm install -g pkg
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | RUN cd /usr/local/lib/node_modules/all-contributors-cli && \
 | 
					
						
							|  |  |  |  |     pkg dist/cli.js -t node18-linux -o /usr/local/bin/all-contributors-cli
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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-10 13:43:11 -06:00
										 |  |  |  | # Copy all-contributors-cli from nodejs-deps stage
 | 
					
						
							|  |  |  |  | COPY --from=nodejs-deps /usr/local/bin/all-contributors-cli /usr/local/bin/all-contributors-cli
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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"]
 |