本日、問題となったのは、独自にアップデートされなかった奇妙な 2.4.0-betaXYZ があったため、クリーンインストールを実行したかったことです。クリーンインストールした別の VM でテストを行い、バックアップを 2.7.12 に復元したところ、完璧に機能しました(データコンテナを redis と postgres に分割しました)。
現在、メインサーバーは古い Ubuntu と古い Docker を実行していたため、以下のことを行いたかったのです。
- バックアップを取得する
- Discourse をシャットダウンする
- 再起動を伴う OS アップグレードの作業を行う
- クリーンインストールを実行する
- バックアップを復元する
コンテナをすぐに削除せず、オフのままにしておきたかったのです。テスト中に忘れてしまった何かが必要になるかもしれないと確信が持てなかったからです。そして、unless-stopped は私にとって完璧な再起動ポリシーだと考えました。なぜなら、手動で停止しない限り、コンテナが再起動後に自動的に起動することを保証してくれるからです。通常、私が望むことなので、なぜそれを永続化しようとしないのかと思いました。
それが不可能でも大したことではありません。
Docker のアップデートを実行するだけです(または、あまりにも頻繁に忘れる場合は、cron を使用して 5 分ごとに Docker のアップデートを実行します)。