Docker mysql NO_PUBKEYエラー時の対処(Dockerfileに記載する方法)+apt-get updateできない場合
Dockerでエラーが出て立ち上がらない時のDockerfileの書き方
エラー
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 467B942D3A79BD29
解決法
問題のコンテナのDockerfileに以下を記載。
必ずapt-get update の前に記載すれば解決する。
-略-
RUN apt-key adv --keyserver pgp.mit.edu --recv-keys 467B942D3A79BD29
RUN apt-get update
-略-
上記で解決しない,apt-get updateができない場合
もし、NO_PUBKEYが複数出ていて、かつMYSQLのバージョンが古い場合、上記で解決しません。解決しなかったキーは 7638D0442B90D010 や 9D6D8F6BC857906 など。
実行してもそんなパッケージはありません的なエラーが出ます。
対象のエラー文
GPG error: http://security.debian.org jessie/updates Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 9D6D8F6BC857C906 NO_PUBKEY AA8E81B4331F7F50
ここで記載する方法はapt-get update
を実行するとNO_PUBKEYエラーが出るので、実行できるようにしたいと言う人向けです。
解決方法
許容範囲ギリギリまで新しいイメージへ書き換えてください。
apt-get update
ができないのは古いMYSQLにDebianがないかららしいです。
問題はGPGでなくImageにあります。私はmysql:5.5.40で上記の現象にハマり、mysql:5.5.62に変更することでことなきを得ています。
ただ、通常の mysql:5.5.62 は使用しないでください
なぜか、
mysql:5.5.62 は M1で使用すると立ち上げても秒で落ちます
古いイメージだとarm64が対応していないので、dockerのメリットの一つ「WindowsとMacで同じように環境構築ができる」、が潰れてしまいます。
問題なく動作できたイメージは以下の通りです。
Dockerfileには
FROM biarms/mysql:5.5.62-linux-arm64v8-beta-circleci
と記述するか、docker-compose.ymlにと記述してください。
image:biarms/mysql:5.5.62-linux-arm64v8-beta-circleci
しんどい誰かの助けになれば幸いです。
Discussion