Postgres公式イメージにslimタグは無い、OSはbookwormに揃える

  • Docker
  • PostgreSQL

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

DockerのベースイメージをAlpineにするかDebian系にするかで色々調べていて、Postgres公式イメージ周りで確認できたことがあったのでメモ。

結論

  • Postgres公式イメージに slim タグは無い
  • OSはbookwormに揃える

何を確認したか

ローカル開発環境とLambda本番環境でOSを揃えたくて、Node/Python/PHP/Java/Goあたりのイメージを見ながら方針を決めていた。この辺りはDebianベースのタグが揃っているので問題なかったが、Postgresだけ様子がおかしかった。

postgres:bookworm-slim のようなタグを探しても見つからない。最初は見落としかと思ったけど、公式のタグ一覧を見る限り実在しない。

Postgres公式イメージのタグ構成

現行のPostgres公式イメージ(Docker Hub / docker-library)は、Debianの世代コードネームをベースにタグが切られている。

  • bookworm
  • alpine(バージョン別に alpine3.23 / alpine3.24 など)

slim は無い。Node.jsやPythonの公式イメージには slim タグがあるので、そのノリでPostgresにもあるだろうと思い込んでいたが、これはPostgres特有の事情だった。

OS統一方針

flowchart TD
    A[OSを統一したい] --> B{Postgres公式イメージに<br/>slimタグある?}
    B -- ない --> C[bookwormでの通常タグを採用]
    C --> D[Node/Python/PHP/Java/Goも<br/>bookwormに統一]

Postgresだけ他と違うベースにするのは統一の意味が薄れるので、全部bookwormに寄せる方針にした。

サイズ比較についての補足

Alpineベースは軽量(数MBオーダー)で、Debian系(bookworm)はそれよりだいぶ大きくなる、という一般論自体は間違っていない。ただし「Alpineの何倍」という具体的な倍率は、公式ドキュメントで直接比較された数字ではなく、その場で出した目安の域を出ない。実際のイメージサイズはパッケージ構成でも変わるので、倍率をそのまま採用するのはやめた。

分かったこと

  • 「Xの公式イメージにあるタグ体系が、Yの公式イメージにも同じようにある」とは限らない(slim はPostgresには無い)
  • OSを統一する場合、各言語のイメージだけでなくPostgresなどミドルウェア側のタグ構成も個別に確認した方がいい