Hugo

Hugo Theme Ananke per Docker Compose aus Git Repo Ordner

Hugo Theme Ananke per Docker Compose aus Git Repo Ordner

Infolinks zu Hugo

Wie immer führen viele Wege zum Ziel. Wir wollen eine Website mit Hugo bauen und hierfür die neueste Hugo Version nutzen. Wir starten mit einem Ubuntu Basis Image und erstellen eine Dockerfile Datei mit allen nötigen Direktiven für den Bau eines solchen Hugo-Ubuntu Images.

Dockerfile für Hugo-Ubuntu Image
# Defines Image for Hugo Service
FROM ubuntu:latest

WORKDIR /data

LABEL maintainer "joe.brandes@gmail.com"
LABEL description "Hugo service with Go and Ubuntu"

ENV TZ="Europe/Berlin" \
    HUGODEBSRC="https://github.com/gohugoio/hugo/releases/download/v0.126.2/hugo_extended_0.126.2_linux-amd64.deb" \
    PROJECT="quickstart"

RUN ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime && \
    echo ${TZ} > /etc/timezone && \
    apt update && \
    apt install -y vim git curl && \
    curl -L ${HUGODEBSRC} -o ./hugo.deb && \
    apt install -y ./hugo.deb

EXPOSE 1313

COPY data/ /data

CMD [ "bash" ]

Wir könnten jetzt einen entsprechenden Container mit docker run ... erzeugen und nutzen.

Wir wollen aber die noch effizientere Docker Compose Lösung umsetzen:

  • Hugo Projekt starten: docker compose up --build -d und

  • Hugo Projekt stoppen: docker compose down.

Docker Compose Datei für die Hugo-Ubuntu Lösung
services:
  hugo:
    build: .
    container_name: hugo-server
    working_dir: /data/quickstart
    command: hugo server --bind=0.0.0.0 -D
    ports:
      - 1313:1313
    volumes:
      - ./data:/data

Für die Erstausstattung habe ich einen vollständigen Projektordner mit einem Hugo-Projekt basierend auf dem Theme Ananke meinem Trainings-Repo joebrandes/containercodes beigelegt.

Hinweis

Ohne config.toml - die Hugo-Projekt-Konfigurationsdatei - mit passenden Daten und Einstellungen kann der Hugo Server leider nicht sauber starten.

Bei der Umsetzung mit Docker Desktop für Windows sollte man statt der Mount-Binds im Compose-File auf die Docker Volumes ausweichen.

Also einfach meinen Repo-Ordner nutzen. Bei der Erstellung des Images werden die nötigen Quickstart Projekt Dateien über die COPY-Direktive erzeugt.

Die beigelegten Dateien und Hilfsskripte zeigen die manuelle Umsetzung.

Die Bearbeitung der Hugo-Dateien kann wieder mit Dev Container Technik im Visual Studio Code durchgeführt werden. Das funktioniert dann ja auch wenn man auf Docker Volumes ausweichen möchte oder muss.

Man kann auch automatisierte Umsetzungen der Hugo Webseiten versuchen:

  • GitHub Actions

  • GitLab Runner

  • Jenkins

Eine Anleitung für Hugo mit dem GitLab Runner findet man in dieser Ausarbeitung bei Hugo GitLab Runner.