Aber in diesem Fall muss der Bootstrap-Schritt auf der Produktionsmaschine erfolgen. Das untergräbt meines Erachtens den Sinn, ein Basis-Image in eine Container-Registry zu pushen (da dies genau mit der Absicht geschieht, ein Image nicht in der Produktion bootstrappen zu müssen, außer vielleicht, um einen DB-Migrationsschritt oder Ähnliches auszuführen).
So gehe ich bei nicht-Discourse-Websites vor, die ich hoste: Normalerweise verwende ich Flyway, um Migrationen in der Datenbank auszuführen, zusammen mit anderen Aufgaben wie dem Leeren des Redis-Caches, aber ohne andere ressourcenintensive Prozesse zu starten, insbesondere solche, die von externen Diensten abhängen, wie das Aktualisieren von HTTPS-Zertifikaten (das würde ich in einem Cronjob erledigen, außer beim ersten Mal, was in Ordnung ist) oder das Ändern der Codebasis (diese wäre statisch im Image, wie Pakete, Bibliotheken und andere Komponenten). Es scheint, dass Discourse Rake verwendet, was in Ordnung ist, aber es führt auch andere Aufgaben aus, wie das Installieren von Gems, das Generieren von Assets, das Aktualisieren der MaxMind-Datenbank und möglicherweise andere Dienste (was den Rebuild-Schritt brechen würde, wenn beispielsweise der Dienst ausgefallen ist oder wenn sich die API ändert, was selten ist, aber passieren könnte).
Ich sage natürlich nicht, dass Discourse so vorgehen sollte, aber ein Image in einer CI-Umgebung zu generieren und dann nur einen DB-Migrationsschritt auf Staging-/Produktionsservern auszuführen, zusammen mit der Definition der Umgebungsvariablen, ist das, was ich erwarten würde. Das ist mit anderer Software wie WordPress, MediaWiki, RocketChat usw. leicht umsetzbar. Discourse ist meiner Meinung nach die beste Software für Foren, und sie haben vielleicht gute Gründe, es so zu machen, wie sie es tun, aber im Moment würde ich nur die Standard-Installation (oder die Multicontainer-Installation) verwenden, um Kopfschmerzen zu vermeiden, und einfach hoffen, dass beim Rebuild nichts schiefgeht.
Es scheint, dass der Bootstrap dennoch in einer Produktionsumgebung und nicht in einer CI-Umgebung durchgeführt werden sollte, um ein Basis-Image zu generieren, das sowohl in Staging- als auch in Produktionsumgebungen verwendet wird. Darüber hinaus ist die Abweichung von der Standardinstallation ein riesiges Warnsignal, das in Zukunft zu Kopfzerbrechen führen kann, wenn die Software Updates erhält.