docker内でGPG errorが出た際の対処

docker内で以下のようなGPG errorが出た際の対処方法

W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://security.debian.org/debian-security buster/updates InRelease: At least one invalid signature was encountered.

GPG keyが古くなってしまっているので、新しいものに交換する必要があるのだが、その作業をdockerfile内に書くのはあまり良くない。この方法ではDockerfileを変更することなく回避することができる。

対処法

  • 元イメージを最新にする ex) docker pull python:3.7-slim-buster
  • --no-cacheをつけてビルドする
  • ビルドキャッシュを削除する docker system prune

元イメージにあるGPG keyが古いので新しいkeyを持っている(であろう)イメージに交換する。元イメージはなるべく大きなプロジェクトのものを使用していればたいてい更新してくれているはずだ。もし、更新してくれなければ、それはこちらで対応するのではなく、元イメージの方を更新するという対処を行うべきだろう。

2つ目は内部のキャッシュにより古いイメージが使用されてしまう可能性があるため、キャッシュを使用しない用にしよう。

3つ目は、2つ目があれば良さそうだが、私の場合はシステムのビルドキャッシュをすべて削除しなければ更新されなかった。ここは要調査である。