This commit is contained in:
82
Dockerfile
82
Dockerfile
@@ -1,65 +1,86 @@
|
||||
############################
|
||||
# 1) Go‑Build
|
||||
# 1) Go-Build
|
||||
############################
|
||||
FROM golang:1.26 AS build
|
||||
FROM golang:1.26-alpine AS build
|
||||
|
||||
WORKDIR /app
|
||||
COPY go.mod go.sum ./
|
||||
|
||||
# git wird für private/selbst gehostete Module benötigt.
|
||||
RUN apk add --no-cache git ca-certificates
|
||||
|
||||
COPY go.mod go.sum* ./
|
||||
RUN go mod download
|
||||
|
||||
COPY . .
|
||||
RUN CGO_ENABLED=0 go build -o /blog .
|
||||
|
||||
# modernc.org/sqlite läuft ohne CGO.
|
||||
# Dadurch brauchen wir keine gcc/libsqlite3-dev Pakete und bekommen ein schlankes Binary.
|
||||
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags="-s -w" -o /blog .
|
||||
|
||||
|
||||
############################
|
||||
# 2) Content‑Clone (Stage)
|
||||
# 2) Content-Clone Stage
|
||||
############################
|
||||
FROM alpine/git AS content
|
||||
|
||||
# Parameterisierbar beim docker build --build-arg …
|
||||
ARG CONTENT_REPO=https://git.send.nrw/b1tsblog/blogcontent.git
|
||||
ARG CONTENT_REF=main
|
||||
|
||||
RUN git clone --depth 1 --branch ${CONTENT_REF} ${CONTENT_REPO} /src
|
||||
|
||||
# ─── Repack: bring alles in eine saubere Struktur ────────────────
|
||||
# • Markdown‑Posts: /articles/*.md → /out/content
|
||||
# • Bilder + CSS + JS: /static/**/* → /out/static
|
||||
# • statische Seiten: /pages/* → /out/pages
|
||||
# (Pfad‑Anpassung hier nach DEINEM Repository‑Layout)
|
||||
# Zielstruktur:
|
||||
# /out/content Artikel: .md und .html
|
||||
# /out/static CSS, Bilder, JS
|
||||
# /out/pages statische Seiten: .md und .html
|
||||
# /out/templates Templates
|
||||
RUN mkdir -p /out/content /out/static /out/pages /out/templates
|
||||
|
||||
RUN mkdir -p /out/content /out/static /out/pages /out/templates/
|
||||
RUN find /src/articles -name '*.md' -exec cp {} /out/content/ \;
|
||||
RUN cp -r /src/static/* /out/static/
|
||||
RUN cp -r /src/pages/* /out/pages/
|
||||
RUN cp -r /src/templates/* /out/templates/
|
||||
RUN if [ -d /src/articles ]; then \
|
||||
find /src/articles \( -name '*.md' -o -name '*.html' \) -exec cp {} /out/content/ \; ; \
|
||||
fi
|
||||
|
||||
RUN if [ -d /src/static ]; then \
|
||||
cp -r /src/static/. /out/static/ ; \
|
||||
fi
|
||||
|
||||
RUN if [ -d /src/pages ]; then \
|
||||
find /src/pages \( -name '*.md' -o -name '*.html' \) -exec cp {} /out/pages/ \; ; \
|
||||
fi
|
||||
|
||||
RUN if [ -d /src/templates ]; then \
|
||||
cp -r /src/templates/. /out/templates/ ; \
|
||||
fi
|
||||
|
||||
|
||||
############################
|
||||
# 3) Runtime‑Image
|
||||
# 3) Runtime-Image
|
||||
############################
|
||||
FROM debian:bookworm-slim
|
||||
FROM alpine:3.21
|
||||
|
||||
# (optional) MySQL‑Client für später
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
ca-certificates git \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
RUN apk add --no-cache ca-certificates git tzdata
|
||||
|
||||
RUN mkdir -p \
|
||||
/content \
|
||||
/static \
|
||||
/pages \
|
||||
/templates \
|
||||
/data \
|
||||
/git-temp
|
||||
|
||||
# ─── Binärdatei ─────
|
||||
COPY --from=build /blog /usr/local/bin/blog
|
||||
|
||||
# ─── Content + Assets ───
|
||||
RUN mkdir -p /content /static /pages /app /templates /ticks
|
||||
COPY . /app
|
||||
COPY --from=content /out/content /content
|
||||
COPY --from=content /out/static /static
|
||||
COPY --from=content /out/pages /pages
|
||||
COPY --from=content /out/templates /templates
|
||||
COPY --from=content /out/static /static
|
||||
COPY --from=content /out/pages /pages
|
||||
COPY --from=content /out/templates /templates
|
||||
|
||||
ENV BLOG_CONTENT_DIR=/content
|
||||
ENV BLOG_STATIC_DIR=/static
|
||||
ENV BLOG_PAGES_DIR=/pages
|
||||
ENV BLOG_TEMPLATES_DIR=/templates
|
||||
ENV BLOG_TICKS_DIR=/ticks
|
||||
ENV BLOG_DATA_DIR=/data
|
||||
ENV BLOG_TRUSTED_HTML=true
|
||||
|
||||
ENV GIT_ENABLE=false
|
||||
ENV GIT_REPO=null
|
||||
ENV GIT_BRANCH=main
|
||||
@@ -67,4 +88,5 @@ ENV GIT_DIR=/git-temp
|
||||
ENV GIT_INTERVAL=10
|
||||
|
||||
EXPOSE 8080
|
||||
|
||||
CMD ["blog"]
|
||||
|
||||
Reference in New Issue
Block a user