Seit dem ich mit Docker in Kontakt gekommen bin und die Vorteile erkannt habe, setze ich eigentlich Alles nur mehr mittels Container auf und nehm' als Host-Betriebssystem sowas wie Fedora CoreOS. Dann spar' ich mir auch noch die Linux-Administrationskosten 🙂
Der Docker Swarm ist sowas wie ein Kubernetes für Arme, ist aber für viele kleine bis miittlere Projekte bestens geeignet und in der Administration wesentlich einfacher als Kubernetes.
Bzgl. Container Start:
Wenn ich nach dem gehe, was andere Projekte so machen, dann wird da immer so eine Art "Entrypoint" als Start-Kommando des Containers aufgerufen, welcher etwaige Initialisierungen vornimmt, eben so wie oben vorgeschlagen die Verzeichnisse anlegt, falls noch nicht vorhanden und dann die Haupt-Applikation anwirft.
Andere Projekte "übersetzen" auch noch diverse beim Containerstart mitgegebene Umgebungsvariablen in Config-Settings, erstellen also beim Start das Config-File. Der Fantasie sind da keine Grenzen gesetzt.
Bzgl. Image-Hosten: Man könnte im Github Repository mittels der sog. "Actions" eine Pipeline bauen, die beim einchecken diverser "Schlüssel-Dateien" oder sonstiger Trigger wie einer neuen Release einen Image-Build anstößt und das Image dann auch gleich auf den Docker Hub hochlädt.