GitHub Container Registry(ghcr.io)にDockerイメージPUSHして、そのDockerイメージを参照する別のDockerイメージを作成して使用するときにハマったのでメモします。
状態
ベースDockerイメージ
- ghcr.io/username/child:latest
 Dockerfile
FROM python:3.8-slim
RUN echo "foo"
ベースDockerイメージを参照するDockerイメージ
- ghcr.io/username/parent:latest
 Dockerfile
FROM ghcr.io/username/child:latest
# 色々インストール
発生した問題
productionで使用するDocker
 Dockerfile
FROM ghcr.io/username/parent:latest
# 色々ビルド
RUN python -v
この状態でPythonのバージョンを調べると3.8になります。
Pythonのバージョンを更新しようとして、ghcr.io/username/child:latestのDockerfileを更新しました。
 Dockerfile
+ FROM python:3.9-slim
RUN echo "foo"
productionで使用するDockerを再度ビルドすると、Pythonのバージョンが3.8のままでした。
原因
ベースイメージをlatestにしていても、常に最新のイメージを取得するわけではありません。
そのDockerfileがビルドされた時点でのlatestのイメージを取得します。
そのため、ベースDockerイメージを更新したら、ベースDockerイメージを参照するDockerイメージも再度ビルドする必要があります。
当たり前のことなのですが、初めてハマりました。
まとめ
灯台下暗し