よっしー
こんにちは。よっしーです(^^)
今日は、Docker環境でMySQLのGPGエラーの対応方法についてご紹介します。
背景
Docker環境でMySQLのGPGエラーが発生したので、その対応方法を備忘としてこの記事に残しました。
下記のサイトを参考にしました。
エラー内容
Dockerfileの内容は下記になります。
FROM mysql:8.0.28
RUN apt-get update \
&& apt-get install -y \
curl \
&& apt-get clean
&& rm -rf /var/lib/apt/lists/*
このとき、下記のコマンドを実行します。
docker build --platform=linux/amd64 .
すると下記のエラーが発生しました。
11.75 W: GPG error: http://repo.mysql.com/apt/debian buster InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B7B3B788A8D3785C
11.75 E: The repository 'http://repo.mysql.com/apt/debian buster InRelease' is not signed.
------
Dockerfile:3
--------------------
2 |
3 | >>> RUN apt-get update \
4 | >>> && apt-get install -y \
5 | >>> curl \
6 | >>> && apt-get clean \
7 | >>> && rm -rf /var/lib/apt/lists/*
8 |
--------------------
ERROR: failed to solve: process "/bin/sh -c apt-get update && apt-get install -y curl && apt-get clean && rm -rf /var/lib/apt/lists/*" did not complete successfully: exit code: 100
エラー対応内容
Dockerfileを下記のように修正しました。
FROM mysql:8.0.28
RUN mv /etc/apt/sources.list.d/mysql.list /etc/apt/sources.list.d/mysql.list.disabled
RUN apt-get update \
&& apt-get install -y \
curl \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
RUN curl -sSfL https://repo.mysql.com/RPM-GPG-KEY-mysql-2023 | gpg --import
RUN gpg --batch --export "B7B3B788A8D3785C" > /etc/apt/keyrings/mysql.gpg
RUN mv /etc/apt/sources.list.d/mysql.list.disabled /etc/apt/sources.list.d/mysql.list
RUN apt-get update
この状態で、ビルドすると正常にビルドが完了しました。
解説
このDockerfileは、MySQL 8.0.28の公式Dockerイメージをベースにしています。以下にコードの解説をいたします。
- FROM mysql:8.0.28:
- この行は、公式のMySQL Dockerイメージをベースにしています。バージョンは8.0.28です。
- RUN mv /etc/apt/sources.list.d/mysql.list /etc/apt/sources.list.d/mysql.list.disabled:
- この行は、
/etc/apt/sources.list.d/mysql.list
というファイルを/etc/apt/sources.list.d/mysql.list.disabled
に移動しています。MySQLのパッケージリポジトリ関連を無効にしています。
- この行は、
- RUN apt-get update \ && apt-get install -y \ curl \ && apt-get clean \ && rm -rf /var/lib/apt/lists/*:
- このブロックは、以下の処理を行っています:
apt-get update
: パッケージリストを更新します。apt-get install -y curl
:curl
パッケージをインストールします。apt-get clean
: インストール時に生成されたキャッシュや一時ファイルを削除します。rm -rf /var/lib/apt/lists/*
: パッケージリストのキャッシュを削除します。
- このブロックは、以下の処理を行っています:
- RUN curl -sSfL https://repo.mysql.com/RPM-GPG-KEY-mysql-2023 | gpg –import:
- この行は、MySQLの公式GPGキーをダウンロードしてインポートしています。これはパッケージの署名を検証するために必要です。
- RUN gpg –batch –export “B7B3B788A8D3785C” > /etc/apt/keyrings/mysql.gpg:
- この行は、指定されたGPGキーをエクスポートして
/etc/apt/keyrings/mysql.gpg
に保存しています。これはパッケージの署名を検証するために使用されます。
- この行は、指定されたGPGキーをエクスポートして
- RUN mv /etc/apt/sources.list.d/mysql.list.disabled /etc/apt/sources.list.d/mysql.list:
- この行は、最初に移動した
mysql.list.disabled
ファイルを元の場所に戻しています。
- この行は、最初に移動した
- RUN apt-get update:
- 最後に、再度パッケージリストを更新しています。
このDockerfileは、MySQLの公式イメージをカスタマイズして、必要なパッケージをインストールし、GPGキーを設定しています。これにより、MySQLコンテナを実行する際に必要な準備が整います。
おわりに
今日は、Docker環境でMySQLのGPGエラーの対応方法についてご紹介しました。
よっしー
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント