Subsections of Websites
Hugo
Subsections of Hugo
Hugo Website mit Docker bauen
Für den Bau einer Hugo Website benötige ich diverse Tools, die aber nicht in den öffentlichen Docker Images verfügbar sind.
Deshalb hab ich mich dazu entschieden dieses selbst zu bauen.
Docker Image bauen
Von Zeit zu Zeit sollte die Alpine Version erneuert werden. Die aktuell angebotene Hugo Version kann auf der Package Liste eingesehen werden:
https://pkgs.alpinelinux.org/packages?name=hugo&branch=v3.19
FROM alpine:3.19
# openssh um git per SSH anzufragen
RUN apk add hugo go git openssh
# hugo als default Start
ENTRYPOINT ["hugo"]
# Website wird in /data erwartet
WORKDIR /data
# werden keine Parameter angegeben, Helppage anzeigen
CMD ["--help"]
docker build . -f Dockerfile -t my-hugo:latest
Website bauen
SSH basiertes GIT pull
Ist die Webseite in einem GIT-Repository hinterlegt und muss gepullt werden, kann das Image dies auch übernehmen.
Im GIT_DIR
sollte aber bereits das Repository ausgecheckt sein, da hier nur ein Pull ausgeführt wird!
mkdir -p /srv/hugo
git clone git@git.server.com:my/hugo-website.git git
chown -R 33:33 /srv/hugo/git
# Pfad zum SSH Key
SSH_DIR="/srv/hugo/ssh/"
# Pfad zum lokalen GIT Repository
GIT_DIR="/srv/hugo/git/"
# Hugo public Pfad (Ausgabe der gerenderten Daten)
RENDER_DIR="/var/www/html/"
DOCKER_IMAGE="my-hugo:latest"
docker run -ti --name hugo -u 33:33 --rm \
-v ${SSH_DIR}:/ssh/:ro \
-v ${GIT_DIR}:/data \
-v ${RENDER_DIR}:/data/public/ \
--entrypoint /bin/sh \
my-hugo:latest \
-c 'git pull'
Website rendern
Die gerenderten Daten werden im RENDER_DIR
abgelegt, dies sollte im Regelfall das Docroot der Webseite sein.
Das abschließende “–” sorgt für eine Überschreibung des “–help” Standardparameters und ist notwendig!
docker run -ti --name hugo -u 33:33 --rm \
-v ${SSH_DIR}:/ssh/:ro \
-v ${GIT_DIR}:/data \
-v ${RENDER_DIR}:/data/public/ \
my-hugo:latest \
--