LAMP環境 を構築する自作の Docker Compose で MySQL のバージョンを落としてみました。
ベースは Ambergrease で。
コード
変更箇所を以下に記します。
mysql/docker/Dockerfile
まずは Dockerfile
。
# disable repository mysql8.0 & enable repository mysql5.7
RUN yum-config-manager --disable mysql80-community && yum-config-manager --enable mysql57-community
rpm から MySQL をダウンロードしてくるのは同じですが、 8.0
を無効化し、代わりに 5.7
を有効化しています。これがないと始まりませんね。
template/mysql/base.cnf
続いて設定ファイル。基本的には一度 5.7
をインストールした環境から設定ファイルを引っ張ってきてそれに手を加える、という形で構築。
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# pid file
pid-file=/var/run/mysqld/mysqld.pid
# language
## lc-messages-dir = /usr/share/mysql-8.0/japanese
lc-messages-dir = /usr/share/mysql/japanese
# error messages
## lc_messages_dir = /usr/share/mysql-8.0
lc_messages_dir = /usr/share/mysql
## collation_server = utf8mb4_ja_0900_as_cs_ks
collation_server = utf8mb4_general_ci
言語パッケージのパスが異なるので注意が必要ですね。後は照合順序が 8.0
で入った照合順序をデフォルトにしていたのでこれも相応のものに変更します。
workspace/entrypoint_db.sh
# get the init password
## DB_INIT_PASSWORD=$(sudo grep 'temporary password' /var/log/mysql/mysql-error.log | sudo awk 'END{print $13}')
DB_INIT_PASSWORD=$(sudo grep 'temporary password' /var/log/mysql/mysql-error.log | sudo awk 'END{print $11}')
ログの出力フォーマットが変わったのか、空白区切りで区切った際に初期パスワードが出現する位置が変わっています。これも変更。
以上の変更で 8.0
用の環境から 5.7
用の環境を作ることができました。