🦊

Docker mysql NO_PUBKEYエラー時の対処(Dockerfileに記載する方法)+apt-get updateできない場合

2022/08/25に公開

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で同じように環境構築ができる」、が潰れてしまいます。

問題なく動作できたイメージは以下の通りです。
https://hub.docker.com/layers/biarms/mysql/5.5.62-linux-arm64v8-beta-circleci/images/sha256-3ed7ba6560929d9151e358e00bd876edf54d8737f47f5fc31c94cb1012b6da74?context=explore

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