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 コメント