# Multi-stage Hugo build: # Stage 1 (builder) runs Hugo against the cloned upstream content. # Stage 2 (serve) ships the rendered /public/ via nginx. # Both base-image refs are pinned via build args sourced from # meta/services.yml and surface in the global image-drift report. ARG HUGO_BUILDER_IMAGE ARG HUGO_BUILDER_VERSION ARG HUGO_NGINX_IMAGE ARG HUGO_NGINX_VERSION FROM ${HUGO_BUILDER_IMAGE}:${HUGO_BUILDER_VERSION} AS builder ARG HUGO_BASE_URL ARG HUGO_ENVIRONMENT ARG HUGO_MINIFY USER root RUN install -d -o hugo -g hugo /src /public USER hugo:hugo WORKDIR /src COPY --chown=hugo:hugo ./services/repository/ /src/ RUN set -eu; \ if [ -f package.json ]; then \ npm install --no-audit --no-fund --no-progress; \ fi RUN set -eu; \ if [ "${HUGO_MINIFY}" = "true" ]; then \ hugo --minify -e "${HUGO_ENVIRONMENT}" -b "${HUGO_BASE_URL}" -d /public; \ else \ hugo -e "${HUGO_ENVIRONMENT}" -b "${HUGO_BASE_URL}" -d /public; \ fi FROM ${HUGO_NGINX_IMAGE}:${HUGO_NGINX_VERSION} COPY --from=builder /public/ /usr/share/nginx/html/ EXPOSE 80