📄

自作Dockerfileを作るときにハマったこと

この記事は公開から2年以上経過しています。内容が古くなっている可能性があります。

GitHub Container Registry(ghcr.io)にDockerイメージPUSHして、そのDockerイメージを参照する別のDockerイメージを作成して使用するときにハマったのでメモします。

状態

ベースDockerイメージ

  • ghcr.io/username/child:latest
FROM python:3.8-slim

RUN echo "foo"

ベースDockerイメージを参照するDockerイメージ

  • ghcr.io/username/parent:latest
FROM ghcr.io/username/child:latest

# 色々インストール

発生した問題

productionで使用するDocker

FROM ghcr.io/username/parent:latest

# 色々ビルド
RUN python -v

この状態でPythonのバージョンを調べると3.8になります。 Pythonのバージョンを更新しようとして、ghcr.io/username/child:latestDockerfileを更新しました。

+ FROM python:3.9-slim

RUN echo "foo"

productionで使用するDockerを再度ビルドすると、Pythonのバージョンが3.8のままでした。

原因

ベースイメージをlatestにしていても、常に最新のイメージを取得するわけではありません。 そのDockerfileがビルドされた時点でのlatestのイメージを取得します。 そのため、ベースDockerイメージを更新したら、ベースDockerイメージを参照するDockerイメージも再度ビルドする必要があります。 当たり前のことなのですが、初めてハマりました。

まとめ

灯台下暗し

新着記事

関連ネットワーク(beta)

ドラッグで移動 / Ctrl+ホイールでズーム