diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..31b65583c075550f41f0184a9382980071a4426c
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,10 @@
+FROM alpine:3.21
+
+RUN apk add --no-cache \
+    ruby texlive make librsvg hugo font-liberation poppler-utils \
+    rsvg-convert pandoc texmf-dist-latexrecommended \
+    texmf-dist-fontsrecommended texmf-dist-langgerman
+
+WORKDIR /work
+
+CMD ["make", "pdf", "web"]
diff --git a/build-with-docker.sh b/build-with-docker.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d9a571744729fd8024904b701c736cfc96db41c7
--- /dev/null
+++ b/build-with-docker.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+# create Docker image if it does not exist
+docker image inspect guideline-builder > /dev/null || docker build -t guideline-builder .
+docker run --rm -v "$(pwd)":/work guideline-builder