Blog

Dockerdateien als automatische Installationsskripte

Mark van Holsteijn

Mark van Holsteijn

Aktualisiert Oktober 22, 2025
2 Minuten

Dockerdateien sind großartige und leicht lesbare Spezifikationen für die Installation und Konfiguration einer Anwendung. Sie sind knapp gehalten, können von jedem verstanden werden, der UNIX-Befehle versteht, führen zu einem testbaren Produkt und lassen sich mit ein wenig awk'ward-Magie leicht in ein automatisiertes Installationsskript verwandeln. Nur für den Fall, dass Sie die betreffende Anwendung auf die gute alte Art und Weise installieren möchten, ohne den Ärger mit Docker :-)

In diesem Fall mussten wir mit der Codahale Metrics-Bibliothek und Zabbix experimentieren. Anstatt einen kompletten Zabbix-Server zu installieren, googelte ich nach einem Docker-Container und war erfreut, eine fertige Zabbix-Serverkonfiguration zu finden, die von Bernardo Gomez Palacio erstellt wurde . . Leider hielt der Server nach etwa 5 Minuten immer wieder an, weil der simplevisor den Eindruck erweckte, dass er zum Anhalten aufgefordert wurde. Ich konnte nicht herausfinden, woher diese Aufforderung kam, und da sie ziemlich hartnäckig war, beschloss ich, zabbix auf einer virtuellen Box zu installieren. Also sah ich mir das github-Projekt docker-zabbix an und fand eine fertige Vagrant-Konfiguration, um den zabbix-Docker-Container selbst zu erstellen (Cool!). Die Dockerdatei enthielt leicht lesbare Anweisungen zur Installation und Konfiguration von Zabbix. Aber anstatt die Anweisungen in die Eingabeaufforderung zu kopieren und einzufügen, klonte ich das Projekt auf der Vagrant-Box und erstellte das folgende awk-Skript, um die Anweisungen in der Dockerdatei direkt auf dem laufenden System auszuführen.

/^ADD/ {
sub(/ADD/, "")
    cmd = "mkdir -p $(dirname " $2 ")"
    system(cmd)
    cmd = "cp " $0
    system(cmd)
}
/^RUN/ {
    sub(/RUN/, "")
    cmd = $0
    system(cmd)
}

Nach ein paar Minuten war das Image richtig konfiguriert. Ich musste nur noch das Skript zur Initialisierung der Datenbank (/start.sh) ausführen und sicherstellen, dass alle Dienste beim Neustart gestartet wurden.

 cd /etc/init.d
for i in zabbix* httpd mysqld snmp* ; do
     chkconfig $i on
     service $i start
done

Auch wenn Sie Docker nicht in der Produktion einsetzen, sind Dockerfiles eine große Verbesserung bei den Spezifikationen der Installationsanweisungen!

Verfasst von

Mark van Holsteijn

Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.

Contact

Let’s discuss how we can support your journey.