Erste Schritte mit Jekyll und Docker
Erfahren Sie, wie Sie Jekyll mit Docker-Containern für eine saubere, isolierte Entwicklungsumgebung einrichten. Dieses Tutorial führt Sie durch das Erstellen, Anpassen und Bereitstellen einer statischen Website, ohne Ruby oder Jekyll direkt auf Ihrem Rechner zu installieren – ideal für Entwickler, die auf jeder Plattform einen einheitlichen Workflow wünschen.

Jekyll ist ein in Ruby geschriebener Generator für statische Websites, entwickelt von GitHub-Mitgründer Tom Preston-Werner. Jekyll verarbeitet Liquid-Templates und als Markdown gespeicherte Inhalte und erzeugt daraus statische Inhalte, die sich anschließend von jedem beliebigen Webserver ausliefern lassen. Diese Markdown-Inhalte sind frei von HTML, Layout, Styling und benutzerdefinierten Shortcodes, die bei anderen Blogging-Plattformen wie WordPress häufig die Inhalte verunreinigen.
Wenn Sie eine gute Einführung in Jekyll suchen, empfehle ich Jekyll Bootstrap.
Docker
Warum Docker? Jekyll erzeugt in der Grundkonfiguration lediglich statische Inhalte, lässt sich aber über Plugins erweitern. Docker bietet den Vorteil, dass sich ein einfacher, sofort startbereiter Container an Entwickler oder an Continuous-Deployment-Dienste verteilen lässt.
Docker Machine
Linux-Nutzer können die Installation von Docker Machine überspringen, müssen jedoch Docker Compose installieren. OS-X-Nutzer müssen eine Docker-Machine-Instanz starten, falls noch keine läuft. Stellen Sie sicher, dass die aktuelle Docker Toolbox installiert ist, bevor Sie fortfahren.
docker-machine create --driver=virtualbox default
eval $(docker-machine env default)
Docker Compose
Linux-Nutzer müssen docker-compose separat installieren, da es in der Regel
nicht in der Docker-Installation enthalten ist. Eine Anleitung finden Sie auf
der Website von Docker.
Jekyll-Container
Für Jekyll gibt es ein Image im Docker Hub, was die Sache zum Kinderspiel macht.
Beachten Sie, dass ich nicht die GitHub-Pages-Version dieses Containers
verwende. Wenn Sie GitHub Pages nutzen möchten, sollten Sie den Image-Tag unten
von latest auf pages ändern. Das pages-Image bildet die von GitHub Pages
verwendete Jekyll-Konfiguration genauer nach.
Erstellen Sie im Stammverzeichnis Ihres Repositorys eine Datei namens
docker-compose.yml mit folgendem Inhalt:
version: "2"
services:
web:
image: "jekyll/jekyll:latest"
name: jekyll
ports:
- "4000:4000"
volumes:
- ./:/srv/jekyll
networks:
default:
driver: bridge
Starten Sie anschließend mit Docker Compose einen Docker-Container:
docker-compose up -d
Öffnen Sie Ihren bevorzugten Webbrowser und rufen Sie http://localhost:4000 auf. Da wir noch keine Dateien haben, liefert der Webserver des Containers eine Verzeichnisliste unseres eingebundenen Volumes aus.
Unter OS X erhalten Sie von localhost:4000 keine Antwort, da Docker innerhalb
einer virtuellen Maschine läuft. Stattdessen müssen Sie
docker-machine ip default ausführen, um die IP-Adresse der Docker Machine zu
ermitteln, oder in VirtualBox eine Portweiterleitung einrichten. Führen Sie bei
laufender Docker Machine default folgenden Befehl im Terminal aus, um eine
Portweiterleitung einzurichten:
VBoxManage controlvm "default" natpf1 "http,tcp,,4000,,4000"
Danach können Sie http://localhost:4000 aufrufen, als würde die Website lokal ausgeliefert.
Website initialisieren
Zum Initialisieren der Website können wir den vorhandenen Jekyll-Container
wiederverwenden. Führen Sie jekyll new . --force im Stammverzeichnis des
Repositorys mit dem Befehl docker exec aus.
docker exec -it jekyll jekyll new . --force
Wenn wir den Browser aktualisieren, sehen wir das neu kompilierte Standard-Theme von Jekyll sowie einige Beispielseiten und -beiträge.
In die Versionsverwaltung übernehmen
Jetzt ist ein guter Zeitpunkt, ein Git-Repository anzulegen, die Website zu
committen und in Ihr Repository zu pushen. Ersetzen Sie <username> durch Ihren
GitHub-Kontonamen:
git init
git add . -m "Initial Jekyll site"
git remote add origin git@github.com:<username>/<username>.github.io.git
git push -u origin master
Die Jekyll-Konfiguration anpassen
Irgendwann werden Sie die Jekyll-Datei _config.yml anpassen wollen und den
Jekyll-Dienst neu starten müssen. Dazu müssen wir tatsächlich den
Docker-Container neu starten.
docker-compose restart