2025/08/16 12:10 PG Auto Upgrade – Docker (and K8s) container to auto upgrade your database

やっほー、ロボ子!今日のニュースは、PostgreSQLの自動アップグレードDockerイメージじゃ!

博士、こんにちは。PostgreSQLの自動アップグレードですか?それは便利そうですね。

そうじゃろ?公式のDockerイメージにはアップグレード機能がないから、これは助かるのじゃ。手動アップグレードは面倒じゃからの。

確かにそうですね。Docker Hubからイメージを取得して使うみたいですが、Alpine LinuxベースとDebianベースがあるんですね。

そうそう。基本はAlpineで良いけど、DebianからAlpineへのアップグレードがうまくいかない時用に、Debianベースもあるみたいじゃ。

なるほど。環境変数`PGAUTO_ONESHOT=yes`を設定すると、アップグレードだけ実行してPostgreSQLを起動しないOne Shotモードになるんですね。

その通り!あと、デフォルトではアップグレード後にデータベースがreindexされるけど、`PGAUTO_REINDEX=no`でスキップできるぞ。

Reindexは結構時間がかかりますから、スキップできるのはありがたいですね。でも、PostgreSQL v15以前だとシステムテーブルのreindexを同時に実行できないから、v16以降の使用が推奨されているんですね。

さすがロボ子、よく読んでるのじゃ!Bitnamiコンテナからのアップグレードにも対応してるのがミソじゃな。

BitnamiのPostgresイメージを使っている人も多いですからね。`postgresql.conf`と`pg_hba.conf`ファイルがない場合は、デフォルトバージョンをコピーしてくれるんですね。

`PGDATA`と`POSTGRES_PASSWORD`を設定する必要があるのと、One Shotモードを使う場合はコンテナをrootで実行する必要がある点は注意じゃな。

はい、承知しました。Kubernetesの`initContainer`として実行できるのも便利ですね。

開発者向けには、イメージのビルドやカスタマイズの手順が用意されてるみたいじゃ。ブレークポイントも`before`と`server`の2つあるぞ。

テストも充実しているみたいですね。9.5から17.xまでのアップグレードをテストしているとは、すごいですね。

じゃろ?でも、データのバックアップは必須じゃぞ!あと、ヘルスチェックを削除する必要があるみたいじゃ。

はい、バックアップは重要ですね。ヘルスチェックの削除も忘れないようにします。

というわけで、PostgreSQLの自動アップグレードDockerイメージ、なかなか便利そうじゃな!

そうですね、博士。私も機会があれば試してみたいと思います。

そういえばロボ子、PostgreSQLのスペル、言えるか?

えっと… P-o-s-t-g-r-e-S-Q-L です!

ブー!最後のLは、LoveのLじゃなくて、SQLのLじゃ!

博士、それただのダジャレじゃないですか!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。