MySQL入門:GPGエラーへの対応

スポンサーリンク
MySQL 入門:GPGエラーへの対応 環境構築
MySQL 入門:GPGエラーへの対応
この記事は約6分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、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イメージをベースにしています。以下にコードの解説をいたします。

  1. FROM mysql:8.0.28:
    • この行は、公式のMySQL Dockerイメージをベースにしています。バージョンは8.0.28です。
  2. 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のパッケージリポジトリ関連を無効にしています。
  3. 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/*: パッケージリストのキャッシュを削除します。
  4. RUN curl -sSfL https://repo.mysql.com/RPM-GPG-KEY-mysql-2023 | gpg –import:
    • この行は、MySQLの公式GPGキーをダウンロードしてインポートしています。これはパッケージの署名を検証するために必要です。
  5. RUN gpg –batch –export “B7B3B788A8D3785C” > /etc/apt/keyrings/mysql.gpg:
    • この行は、指定されたGPGキーをエクスポートして/etc/apt/keyrings/mysql.gpgに保存しています。これはパッケージの署名を検証するために使用されます。
  6. RUN mv /etc/apt/sources.list.d/mysql.list.disabled /etc/apt/sources.list.d/mysql.list:
    • この行は、最初に移動したmysql.list.disabledファイルを元の場所に戻しています。
  7. RUN apt-get update:
    • 最後に、再度パッケージリストを更新しています。

このDockerfileは、MySQLの公式イメージをカスタマイズして、必要なパッケージをインストールし、GPGキーを設定しています。これにより、MySQLコンテナを実行する際に必要な準備が整います。

おわりに

今日は、Docker環境でMySQLのGPGエラーの対応方法についてご紹介しました。

よっしー
よっしー

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました