Dockerのインストールについて混乱しています

今日、Discourse の利用可能な Docker イメージを確認していたのですが、いくつか質問があります。

  1. 両方のイメージで、Discourse のインストール(当然ですが)が記載されていました。
    その後、ドメイン名やメール設定など、システムを起動するために必要な手順がリストされています。

データベースについて混乱しています。設定手順が記載されていません。
Postgres(またはその他の)データベースは同じイメージに含まれているのでしょうか?
Redis も同様でしょうか?それとも完全にオプションの一部なのでしょうか?

Docker イメージに含まれるもののリストには、データベースが記載されていません。

私は職場で開発、ステージング、本番環境に Docker を使用しています。
当社のコンテナは不変です。
アップグレード時に新しいイメージをデプロイする際は、Git から最新コードを取得し、そのまま実行されます。

コンテナ内で変更を加えることはありません。少なくとも、次のデプロイまで続くような変更は行いません。

例えば .NET のバージョンをアップグレードしたい場合は、ベースイメージを修正して、それをデプロイするだけです。

Discourse の Docker イメージについて読むと、通常のインストールのようにイメージの内容に変更が加えられているように見えました。
イメージに加えられた変更は永続化されるのでしょうか?

最初に読んだときは、すべてのデータがデータベースに保存されているのだと思いました。
しかし、データベースもコンテナ内にあるのでしょうか?だとすると、データベースへの変更も永続化されるのでしょうか?

もしそうだとしたら、コンテナを停止して再度起動した場合、すべての変更が保存されるようにするにはどうすればよいのでしょうか?

さらに、より重要なのは、それがフォーラムソフトウェアの新しいバージョンへのアップグレードにどのように影響するかということです。
私が読んだ限りでは、コンテナ内のインスタンスを使って自身を更新するようになっているように見えました。
私は、更新された新しいイメージがデプロイされればすべてうまくいくと思っていたのですが。

私の主な考え方は、Docker イメージを「家畜」として扱うことに慣れていることです。彼らは死ぬこともあれば、デプロイされることもあり、イメージに変更が永続化されることはありません。

Docker イメージが、次の再起動を超えて変更を永続化するという概念は知りませんでした。

@talkingBeat さん、こんにちは

データベースは Docker コンテナの外にあるボリュームにマウントされています。そのため、データは永続化されます。

ご参考になれば幸いです。

なるほど。Discourse から新しいバージョンがリリースされ、Docker ファイルを新しいものに差し替えて実行した場合、データベースはそのまま残りますか?

また、ファイルを変更したり、追加・削除したりしたカスタマイズはどうなりますか?

@RockHopper さん、こんにちは。おかえりなさい。

Discourse のランチャー スクリプトがすべて自動的に処理してくれます。これはここで meta チームによって完全にサポートされています。

お役に立てれば幸いです。