Unsere Organisation betreibt eine Webanwendung und ein Forum sowie einige weitere Anwendungen wie Bitwarden. Ich habe alles containerisiert, um eine Parität zwischen Entwicklung und Produktion sowie ein einfaches Entwicklungsumfeld mit Docker Compose zu erreichen. Wir verwenden eine sehr ähnliche Compose-Datei, um es in der Produktion auszuführen, und das funktioniert für unseren grundlegenden Anwendungsfall sehr gut.
Ich möchte unser Forum auf Discourse umstellen, habe aber Schwierigkeiten herauszufinden, wie ich die Parität zwischen Entwicklung und Produktion sowie ein einfaches Entwicklungsumfeld aufrechterhalten kann.
Die Dokumentation legt nahe, dass Discourse, obwohl es Docker zur Installation und Ausführung verwendet, nicht wirklich in das Container-Paradigma passt wie andere Docker-Container: Man kann es nicht zu einem Compose-/Swarm-/Kubernetes-Stack hinzufügen und ausführen, indem man es wie bei einer anderen Anwendungscontainer mit Datenbank- und Redis-Containern verbindet. Alternative Lösungen oder Vorschläge werden stark abgelehnt, um eine Spaltung der Community zu vermeiden, daher bin ich hier nicht, um den Ansatz in Frage zu stellen.
Ich habe akzeptiert, dass ich Discourse anders ausführen und verwalten muss als den Rest meines Stacks – nämlich über eine dedizierte VM in der Produktion. Aber ich bin neugierig, wie ich meine zugrundeliegenden Ziele erreichen kann: ein einfaches Entwicklungsumfeld mit einer vernünftigen Parität zur Produktion.
Zum Kontext: Mein aktuelles Entwicklungsumfeld lautet „Docker installieren, dieses Repository klonen und docker-compose up ausführen“. Wenn ich den lokalen Installationsleitfaden richtig verstehe, benötigen wir nun 9 Systemabhängigkeiten (Ruby, PostgreSQL usw.), bevor wir Discourse selbst manuell klonen und einrichten. Meiner Meinung nach ist einer der Vorteile von Docker (und Docker Compose), dass man Dinge wie PostgreSQL und Redis nicht lokal auf dem System laufen lassen muss (und die damit verbundenen Probleme bei der Einrichtung, wenn Entwickler unter Windows arbeiten); man kann einfach einen Stack ausführen, und die Prozesse sind in wegwerfbare Container isoliert. Gibt es eine Möglichkeit, diesen Vorteil zu bewahren?
Der andere Nachteil ist, dass wir ein kleines Team von Freiwilligen sind und die meisten Entwickler Windows 10 Home verwenden, das meines Wissens nach WSL nicht unterstützt. Das bedeutet, dass sie die Windows-Installationsanweisungen ohnehin nicht befolgen können (Docker funktioniert zwar unter Windows 10 Home).