Verwirrt über die Docker-Installation

Ich habe mir heute die für Discourse verfügbaren Docker-Images angesehen und habe ein paar Fragen:

  1. Bei beiden Images wird aufgeführt, dass Discourse installiert wird (was offensichtlich ist). Anschließend gibt es eine Liste von Schritten, um alles zum Laufen zu bringen, wobei vor allem die Konfiguration der Domain und des E-Mail-Systems im Vordergrund steht.

Ich bin jedoch bezüglich der Datenbank verwirrt. Es gibt keinen Schritt, um diese zu konfigurieren. Ist die Datenbank (PostgreSQL oder eine andere) im selben Image enthalten? Ist Redis ebenfalls enthalten, oder ist das eine optionale Komponente?

In der Liste der Dinge, die das Docker-Image enthalten wird, ist die Datenbank nicht aufgeführt.

Ich nutze Docker bei der Arbeit für Entwicklung, Staging und Produktion. Unsere Container sind unveränderlich (immutable). Wenn wir ein Upgrade durchführen und ein neues Image bereitstellen wollen, holen wir uns den neuesten Code aus Git, und los geht’s.

Wir nehmen niemals Änderungen im Container vor, oder zumindest keine, von denen wir erwarten würden, dass sie länger als bis zum nächsten Push bestehen bleiben.

Wenn wir beispielsweise auf eine aktualisierte Version von .NET upgraden wollen, ändern wir einfach das Basis-Image und stellen dieses bereit.

Beim Lesen über das Docker-Image für Discourse schien es, als würden Änderungen am Inhalt des Images vorgenommen, als wäre es eine reguläre Installation. Änderungen am Image sollten persistent sein – ist das der Fall?

Als ich es zuerst las, ging ich davon aus, dass alles in der Datenbank gespeichert wird. Aber dann befindet sich die Datenbank doch im Container? Werden Änderungen an der Datenbank also ebenfalls persistent gespeichert?

Wenn dem so ist, wie stelle ich sicher, dass alle Änderungen gespeichert werden, wenn ich den Container herunterfahre (stop) und später wieder starte?

Zweitens und weitaus wichtiger: Wie wirkt sich das auf das Upgrade auf eine neue Version der Forensoftware aus?

Es schien so, als ob in dem, was ich gelesen habe, die Instanzen innerhalb des Containers verwendet werden, um sich selbst zu aktualisieren. Ich hätte erwartet, dass ein neues Image mit den Updates bereitgestellt wird und dann alles funktioniert.

Ich bin es hauptsächlich gewohnt, Docker-Images wie Vieh zu behandeln: Sie sterben, sie werden neu bereitgestellt, Änderungen am Image werden niemals persistent gespeichert.

Ich wusste nicht, dass es Docker-Images gibt, die Änderungen persistent speichern, die länger als ein Neustart des Containers bestehen bleiben.

Hallo @talkingBeat

Die Datenbank ist in einem Volume außerhalb des Docker-Containers eingebunden. Sie ist also persistent.

Ich hoffe, das hilft weiter.

Das ergibt Sinn. Wenn Discourse eine neue Version veröffentlicht und ich die Docker-Datei durch eine neue ersetze und sie ausführe, bleibt die Datenbank dann erhalten?

Was ist mit Anpassungen, die Dateien verändert oder Dateien hinzugefügt bzw. entfernt haben?

Hallo @RockHopper und willkommen zurück!

Das Discourse-Launcher-Skript erledigt das alles für dich; dies wird vom Meta-Team hier vollumfänglich unterstützt.

Ich hoffe, das hilft dir weiter.