Zum Inhalt

MkDocs Image

GitHub · ghcr.io/swatpeacekeeper/mkdocs:latest

Vorgefertigtes Image fuer Dokumentations-Builds mit MkDocs. Enthaelt alle Abhaengigkeiten fuer MkDocs Material, LikeC4-Architekturdiagramme und Playwright (fuer LikeC4-Rendering).

Enthaltene Pakete

Komponente Zweck
python:3.11-slim Basis-Image
mkdocs Statischer Site-Generator
mkdocs-material Material-Theme fuer MkDocs
mkdocs-include-markdown-plugin Markdown-Inhalte aus anderen Dateien einbetten
mkdocs-likec4 LikeC4-Diagramme in MkDocs einbinden
likec4 (npm) LikeC4-CLI fuer Architekturdiagramme
playwright (Chromium) Browser-basiertes Rendering fuer LikeC4-Diagramme
git, graphviz, nodejs, npm Build-Werkzeuge

Zugang

Image ghcr.io/swatpeacekeeper/mkdocs:latest
Port 8000 (Dev-Server)
Entrypoint mkdocs
Default-CMD serve --dev-addr=0.0.0.0:8000

Lokale Nutzung

# Dev-Server starten (Dokumentation live bearbeiten)
docker run --rm -p 8000:8000 -v ${PWD}:/docs \
  ghcr.io/swatpeacekeeper/mkdocs:latest

# Statischen Build erzeugen
docker run --rm -v ${PWD}:/docs \
  ghcr.io/swatpeacekeeper/mkdocs:latest mkdocs build

# Bestimmte Version pinnen
docker pull ghcr.io/swatpeacekeeper/mkdocs:1.0.0

Nutzung in GitHub Actions

- name: Dokumentation bauen
  run: |
    docker run --rm -v ${{ github.workspace }}:/docs \
      ghcr.io/swatpeacekeeper/mkdocs:latest \
      mkdocs build

Lokal bauen

cd mkdocs
docker build -t mkdocs .

CI/CD-Pipeline

Die Pipeline liegt in .github/workflows/build-mkdocs.yml und laeuft bei:

  • Push auf main (publiziert latest + SHA-Tag)
  • Versioniertem Tag v*.*.* (publiziert 1.2.3, 1.2, 1, latest)
  • Pull Requests gegen main mit Aenderungen in mkdocs/ (Build ohne Push)
  • Manuellem Trigger (workflow_dispatch)

Authentifizierung am GHCR erfolgt mit GITHUB_TOKEN (keine externen Secrets noetig).

Dockerfile

FROM python:3.11-slim

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        git graphviz nodejs npm \
    && rm -rf /var/lib/apt/lists/*

RUN npm install -g likec4 \
    && npx playwright install --with-deps chromium

RUN pip install --no-cache-dir \
        mkdocs \
        mkdocs-material \
        mkdocs-include-markdown-plugin \
        mkdocs-likec4

WORKDIR /docs
EXPOSE 8000
ENTRYPOINT ["mkdocs"]
CMD ["serve", "--dev-addr=0.0.0.0:8000"]

Wartung

Images sind nicht exakt versioniert (keine gepinnten Pip/npm-Versionen im Dockerfile). Updates kommen durch manuellen Push oder einen neuen Tag. Renovate-Konfiguration fuer das Basis-Image (python:3.11-slim) ist im Repo aktiv.

Update-Workflow

  1. Dockerfile anpassen (z.B. neues Python-Basisimage)
  2. Commit auf main pushen — latest wird automatisch aktualisiert
  3. Fuer ein versioniertes Release: git tag v1.2.0 && git push origin v1.2.0