git » homepage.git » master » tree

[master] / Containerfile

FROM docker.io/library/node:22.23.1-bookworm-slim@sha256:6c74791e557ce11fc957704f6d4fe134a7bc8d6f5ca4403205b2966bd488f6b3 AS diagrams

WORKDIR /opt/mermaid
ENV PUPPETEER_SKIP_DOWNLOAD=true
COPY --chmod=0644 tools/mermaid/package.json tools/mermaid/package-lock.json ./
RUN umask 022 && npm ci --ignore-scripts --omit=dev --no-audit --no-fund
COPY --chmod=0755 tools/mermaid/render.mjs ./
COPY --chmod=0644 tools/mermaid/stable-css.patch ./

FROM docker.io/library/debian:13-slim@sha256:020c0d20b9880058cbe785a9db107156c3c75c2ac944a6aa7ab59f2add76a7bd

ARG DEBIAN_SNAPSHOT=20260715T000000Z
ARG YTDLP_VERSION=2026.07.04
ARG DEBIAN_FRONTEND=noninteractive

LABEL org.opencontainers.image.title="Alan Dipert homepage builder" \
      org.opencontainers.image.source="https://tailrecursion.com/repos/r/homepage.git/"

RUN rm -f /etc/apt/sources.list /etc/apt/sources.list.d/debian.sources \
    && printf '%s\n' \
       "deb [check-valid-until=no] http://snapshot.debian.org/archive/debian/${DEBIAN_SNAPSHOT} trixie main" \
       > /etc/apt/sources.list \
    && apt-get update \
    && apt-get install --yes --no-install-recommends \
       ca-certificates \
       cmark-gfm \
       chromium \
       fonts-dejavu-core \
       coreutils \
       curl \
       ffmpeg \
       git \
       git-lfs \
       openssh-client \
       make \
       poppler-utils \
       python3 \
       python3-pygments \
       rsync \
       wget \
    && cmark-gfm --version \
    && ffmpeg -version | head -n 1 \
    && git-lfs version \
    && python3 --version \
    && curl -fsSL "https://github.com/yt-dlp/yt-dlp/releases/download/${YTDLP_VERSION}/yt-dlp_linux" \
       -o /usr/local/bin/yt-dlp \
    && printf '%s  %s\n' \
       "6bbb3d314cde4febe36e5fa1d55462e29c974f63444e707871834f6d8cc210ae" \
       /usr/local/bin/yt-dlp | sha256sum --check --strict \
    && chmod 0755 /usr/local/bin/yt-dlp \
    && yt-dlp --version \
    && rm -rf /var/lib/apt/lists/*

COPY --from=diagrams /usr/local/bin/node /usr/local/bin/node
COPY --from=diagrams /opt/mermaid /opt/mermaid
# Mermaid 12.2 loads font CSS concurrently, making embedded SVG styles race.
RUN cd /opt/mermaid \
    && git apply --directory=node_modules/@mermaid-js/mermaid-cli stable-css.patch \
    && ln -s /opt/mermaid/render.mjs /usr/local/bin/homepage-mermaid \
    && node --version \
    && chromium --version \
    && python3 -c 'import pygments; print("Pygments", pygments.__version__)'

ENV LANG=C.UTF-8 \
    LC_ALL=C.UTF-8 \
    TZ=UTC \
    XDG_CACHE_HOME=/tmp/homepage-cache \
    XDG_CONFIG_HOME=/tmp/homepage-config \
    XDG_DATA_HOME=/tmp/homepage-data \
    XDG_STATE_HOME=/tmp/homepage-state

WORKDIR /workspace

CMD ["make", "fresh"]