Files
robbis.space/docker/Dockerfile
Robert Rapp 30d15cd680
Some checks failed
Image bauen und in die Registry pushen / build (push) Has been cancelled
Image in der CI bauen statt zur Laufzeit, Site ins Image backen
Bisher baute der Server das Image selbst und der Container holte sich
Inhalte per git pull ueber deploy.php. Das war seit jeher kaputt: git
verweigerte wegen "dubious ownership" die Arbeit, die &&-Kette brach ab,
hugo lief nie. Live war stets der Stand des letzten Containerstarts.

Statt das zu flicken faellt der Mechanismus jetzt weg. Das Dockerfile
ist zweistufig: Hugo baut die Seite im Builder, das Laufzeit-Image
enthaelt nur nginx und fertiges HTML. Kein PHP, kein git, kein Hugo mehr
zur Laufzeit - 49 MB statt eines Debian-Images mit vier Werkzeugketten.

Deployen heisst damit: neues Image ziehen, Container neu starten.

Entfernt: deploy.php, entrypoint.sh und .htaccess (Apache-Rest aus der
Kirby-Zeit, unter nginx wirkungslos). Der Ordner kirby/ heisst jetzt
docker/, weil dort nie Kirby lag.

docker-compose.yml zieht das Image aus der Registry. Das Volume-Mount
auf /var/www/html ist weg - es haette die ins Image gebackene Seite
verdeckt.

Lokal geprueft: Build laeuft durch, Container liefert alle Seiten und
Assets mit HTTP 200 aus, Intro-Text kommt aus der Markdown-Datei, alle
sieben Lampenbilder sind enthalten.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-31 00:01:17 +02:00

34 lines
1018 B
Docker

# Zweistufiger Build: Hugo erzeugt die Seite, nginx liefert nur noch aus.
# Das fertige HTML steckt im Image - zur Laufzeit wird nichts mehr gebaut
# oder aus git geholt.
FROM debian:bookworm-slim AS builder
ARG HUGO_VERSION=0.147.0
RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
RUN curl -fsSL "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" \
| tar -xz -C /usr/local/bin hugo
WORKDIR /src
COPY . .
# themes/gokarna ist ein Submodule und muss im Build-Context liegen.
# In der CI sorgt actions/checkout mit submodules:recursive dafuer.
RUN test -f themes/gokarna/theme.toml \
|| { echo "FEHLER: themes/gokarna fehlt - Submodule nicht ausgecheckt"; exit 1; }
RUN hugo --minify --destination /public
FROM nginx:1.27-alpine
COPY docker/nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /public /usr/share/nginx/html
EXPOSE 80