概要
DockerでCentOS7のコンテナを作成。
コンテナ内でMySQLをインストール・・・したいけどできん!?
Dockerfileにインストールのコマンドを書いたけどインストールされていないようだったので、コンテナ内のシェルでインストールコマンドを実行することにした。
しかし、そこに現れたのは・・・
エラーでござんす。
エラー内容
# yum -y install mysql-community-server
(略)
The GPG keys listed for the "MySQL 5.7 Community Server" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.
Failing package is: mysql-community-libs-5.7.37-1.el7.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
この記事に感謝!
https://blog.katsubemakito.net/mysql/mysql-update-error-gpg
GPGキーなるものが原因らしい。
GPGキーの有効期限切れ
RPMやyumではパッケージが改ざんされているか検証するためにGPGキーを利用していることがあるのですが、このGPGキーには有効期限が設定されている関係で一定期間が経つと検証が行えなくなりインストールが停止してしまいます。パッケージを作成する際にGPGキーを別の物に変更した場合も同様の現象になります。
解決策
- 新しいGPGキーをインストール
- MySQLをインストール
新しいGPGキーをインストール
# 実行後何も表示されないが、インストールされてるみたい
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
# 改めてMySQLをインストール
yum -y install mysql-community-server
(略)
Completed!
# インストールできたかの確認
sh-4.2# mysql --version
mysql Ver 14.14 Distrib 5.7.37, for Linux (x86_64) using EditLine wrapper
sh-4.2# mysqld --version
mysqld Ver 5.7.37 for Linux on x86_64 (MySQL Community Server (GPL))
インストールできたぜ!!
環境
ディレクトリ構成
以下のような構成で作成しました。
.
├── Dockerfile
└── hello.html
Dockerfile
FROM centos:centos7
# システムのパッケージを更新する
RUN yum update -y && \
yum install -y epel-release && \
yum upgrade -y && \
yum install -y nginx
RUN yum remove mariadb-libs && \
rm -rf /var/lib/mysql/
RUN yum -y localinstall http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm && \
yum -y install mysql-community-server
ADD hello.html /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
RUNを分けているのは、ビルド時にどこのスクリプトで落ちるかをわかりやすくするために。