Ich habe mir heute die für Discourse verfügbaren Docker-Images angesehen und habe ein paar Fragen:
- 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.