Ich bin aktuell auf der Suche nach dem perfekten Setup für kleine, schnelle Webprojekte. Mein Fokus liegt dabei auf leichten Blogsystemen, die ohne aufgeblähte Datenbank auskommen (Flat-File) und sich nahtlos in eine Docker-Infrastruktur integrieren lassen.
Da für das von mir gewählte Yellow CMS kein offizielles Image auf Docker Hub existiert, habe ich mir kurzerhand selbst eine Lösung "gebastelt".
Das Setup: Schlank und Flexibel
Das Ziel war ein Setup, das beim ersten Start automatisch die neueste Version des CMS lädt, aber dennoch persistenten Speicher für die Inhalte nutzt.
Hier ist mein Blueprint:
1. Das Dockerfile
Als Basis dient PHP 8.2 mit Apache. Da Yellow CMS für die Bildverarbeitung und das Handling von Plugins einige Erweiterungen benötigt, installieren wir GD und zip direkt mit.
Dockerfile
FROM php:8.2-apache
# Installation der benötigten Pakete
RUN apt-get update && apt-get install -y \
git \
zip \
unzip \
curl \
libjpeg-dev \
libpng-dev \
libfreetype6-dev \
libzip-dev \
&& docker-php-ext-configure gd --with-jpeg --with-freetype \
&& docker-php-ext-install gd zip \
&& a2enmod rewrite headers \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
# Apache Konfiguration anpassen (wichtig für Pretty URLs)
RUN sed -i 's/AllowOverride None/AllowOverride All/g' /etc/apache2/apache2.conf
WORKDIR /var/www/html
2. Die docker-compose.yml
Der Clou liegt im entrypoint. Falls der Web-Ordner leer ist, zieht sich der Container automatisch das aktuelle Release von GitHub. So sparen wir uns das manuelle Herunterladen der Files.
services:
cms:
build: .
container_name: yellow_cms
restart: unless-stopped
ports:
- "8080:80"
volumes:
- ./www:/var/www/html
- ./log/apache2:/var/log/apache2
entrypoint: >
bash -c "
if [ ! -f /var/www/html/yellow.php ]; then
echo 'Initialisiere Yellow CMS...';
curl -L https://github.com/datenstrom/yellow/archive/refs/heads/master.zip -o /tmp/yellow.zip;
unzip /tmp/yellow.zip -d /tmp/;
cp -a /tmp/yellow-*/. /var/www/html/;
rm -rf /tmp/yellow.zip /tmp/yellow-*;
fi;
chown -R www-data:www-data /var/www/html;
exec apache2-foreground;
"
Startschuss: So bringst du es zum Laufen
Sobald die beiden Dateien im selben Verzeichnis liegen, reichen drei Befehle aus, um dein neues Blogsystem zu starten:
Image bauen:
docker compose build
Container im Hintergrund starten:
docker compose up -d
Logs prüfen (optional):
docker compose logs -f
Nach dem Start ist das CMS unter http://localhost:8080 erreichbar. Da alle Daten im lokalen ./www Ordner liegen, ist das Backup ein Kinderspiel: Einfach den Ordner kopieren, fertig!
Mein Fazit bisher: Yellow CMS ist extrem flink. In Kombination mit Docker hat man in weniger als zwei Minuten eine einsatzbereite Umgebung, die man ohne Datenbank-Altlasten überall hin migrieren kann.