Verwendung eines Launchers, der ein Docker-Image in Docker-Compose erstellt

Hey Mike. Grundsätzlich nutzt du ./launcher bootstrap, um das Image zu erstellen, es in ein Repository hochzuladen und dann ./launcher start-cmd auszuführen, um zu sehen, welche Umgebungsvariablen an Docker übergeben werden müssen, um alles in Gang zu setzen.

Der Grund, warum es keinen solchen Leitfaden gibt, ist, dass Personen, die nicht die grundlegendsten Kenntnisse über die zugrunde liegenden Komponenten haben, diesen finden, ihn nicht verstehen können und dann erwarten, dass es ein Tutorial dafür gibt, wie Ingress auf dem System funktioniert, das sie für die einzige Lösung halten.

Nennen Sie mich verrückt, aber vielleicht sind Sie der lebende Beweis dafür, dass wir die Dinge aus einem bestimmten Grund so gemacht haben?:wink:

Danke, Jay – das habe ich mir schon gedacht. Schließlich hat es funktioniert.

  • Ich werde ein Video und eine Anleitung erstellen, genau zu dem, was ich gemacht habe, damit das nächste Ich nicht wieder Zeit damit verbringt, das herauszufinden.

Ich vermute, ein Teil des Problems liegt darin, dass es gegen den Strom aller anderen Docker-Images läuft. Es ist nicht so plug-and-play. Es ist eher: fummeln, einstecken und dann spielen.

Wie gesagt, der Launcher ist für das, was er tut, ein wunderschönes und zuverlässiges Werkzeug.

Eine wirklich positive Nachricht: Der reine Web-Build funktioniert einwandfrei, ist auf meinem Swarm superschnell und kann aktualisiert werden, weil ich den Build-Server habe.

Wenn ich Zeit habe, werde ich einen Build-Server auf meinem Swarm erkunden, der einen webbasierten Build eines Docker-Images ermöglicht.

Dinge, die ich ausprobiert habe und die viel zu wünschen übrig ließen…

  • Bitnami Docker-Image – lief wie ein Hund ohne Beine.
  • IndieHosts Dockerfile – ich bin nicht einmal bis zum Build gekommen; es schien entschlossen zu sein, alles zu erstellen, ich glaube, es kompilierte Linux. Wieder muss es einen einfacheren Weg geben!

Ok – danke.

Mike.

Wir haben diesen First-Mover-Nachteil :sunglasses:

Das Startskript wurde erstellt, bevor Docker Compose, Docker Swarm, Kubernetes und all das existierten, und … es funktioniert immer noch. Es gibt eigentlich keinen zwingenden Grund, auf etwas anderes umzusteigen. Die „Vorteile

Ah! Das habe ich mich schon immer gefragt. Und beim letzten Mal, als ich nachgeschaut habe, war die Installation von Docker Compose auf Ubuntu ein zusätzlicher Schritt. Es ist, als wollten sie nicht, dass Leute es nutzen, es sei denn, diese Leute verwenden Windows (oder Mac?)

Es ist etwas traurig, dies als offizielle Antwort vom Entwicklungsteam zu hören. Im Grunde sagst du damit, dass, wenn du nicht gut genug bist, um diesen undokumentierten Prozess zum Betreiben von Discourse in der Produktion zu verstehen, du vielleicht gar nicht Discourse in der Produktion betreiben solltest.

Nun, nicht jeder von uns hat leidvolle DevOps-Erfahrung, leider.

@Mike_Sutton Ich stehe auf derselben Seite wie du. Ich habe in den letzten Wochen die Foren gelesen und versucht, diesen Knacken zu knacken. Hast du es geschafft, ein Video zu erstellen, wie du das Problem gelöst hast?

Würde das funktionieren? Wie sieht es mit Datenbank-Migrationen aus?

In diesem Szenario würden Sie Bootstrap die Migrationen durchführen lassen, während es das neue Container-Image erstellt.

Hallo @lucasbasquerotto,

Ja, du kannst Discourse-Docker-Images in ein Repository hochladen und den Rest von /var/discourse archivieren, wie in der folgenden Diskussion beschrieben. Dies ist jedoch keine effiziente Methode und wird offiziell nicht unterstützt. Ich habe dies kürzlich vollständig getestet:

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.

Hallo Mike,

Hast du deinen Prozess am Ende dokumentiert? Es wäre toll, auch das Video zu sehen?

Viele Grüße,