dockerfileをbuildしたときの挙動について。

docker build --pull -t <name> . のように、pullオプションをつけてビルドしたら解消されないでしょうか?

docker build -t <name> . だけですと、FROMに書かれたイメージは更新されません。
①のイメージが同一タグのまま更新されていた場合、最初にダウンロードされたときのバージョンから更新されておらず、差異が出てしまっている可能性があります。


コメントを受けての追記:
Docker Hubに上がっている migrate/migrate:v4.16.2 のイメージは2023年06月のものです。
これは alpine 3.18.0 ベースでビルドされているのが次のコマンドで確認できます。

docker pull migrate/migrate:v4.16.2 docker run --rm --entrypoint '' migrate/migrate:v4.16.2 cat /etc/os-release

GitHubのソースからDockerfileをビルドし直した場合、FROMに記載されている golang:1.20-alpine3.18 がベースになります。
これは現時点で 3.18.4 がベースとなっているのが次のコマンドで確認できます。

docker pull golang:1.20-alpine3.18 docker run --rm golang:1.20-alpine3.18 cat /etc/os-release

ですので、 migrate/migrate:v4.16.2 をベースとする限りはalpine linuxのバージョンは3.18.0になってしまいます。

  • ソースコードからビルドしなおす
  • migrate/migrateの作者が新しいバージョンをDocker Hubにアップロードしたらそちらを使う
  • 個別パッチのような、修正できるプログラムが存在するならDockerfile内で適用する

といった形の選択肢になってくるかと思います。

コメントを投稿

0 コメント