docker-composeのMySQLコンテナは即席で作ったものでロケールを設定しなくても動くことは動いた(It just work!)のですが、やっぱり日本語対応しないとまずいよね?ということで今回はグーグル先生のQiita記事を参考にしてDockerfileからイメージビルドしてみました。
お急ぎの方に先に結果をメモしておきます。参考にしたのはどちらもQiitaの秀逸な記事でしたのでシェアしたいと思います。私なりに咀嚼すると「MySQLはapt-getができるDebianのコンテナを使うとロケール設定ができるよ!」ということらしいです。
DockerのMySQLで日本語入力ができなかった話 – Qiita
DockerのMySQLコンテナで日本語を使いたい!- Qiita
ディレクトリ構成
[home]
[ec2-user]
[wordpress]
・docker-compose.yml
・[certs]
・[mysql]
Dockerfile
・[data]
my.cnf
php.ini
wp-config.php
・[html]
・[mysql]
/home/ec2-user/wordpress/mysql/Dockerfile
FROM mysql:8.0-debian
RUN apt-get update && \
apt-get install -y locales
RUN locale-gen ja_JP.UTF-8
RUN localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG=ja_JP.UTF-8
ENV TZ=Asia/Tokyo
.ymlファイルもDockerfileからビルドしたイメージを使う記述に変更します。
docker-compose.yml
version: '3'
services:
・
・
mysql000ex1:
build:
context: .
dockerfile: ./mysql/Dockerfile
container_name: mysql000ex1
hostname: mysql000ex1
やったね!MySQLで日本語が入力できるようになったよ!助かる!
ただMySQLのバージョンは細かい枝番まで指定すると「Not found」エラーが出て上記のように8.0 で指定しないとpull 出来なかったようでした。また起動後もコンテナが再起動を繰り返して不安定だったので./data/mysqlディレクトリを削除して作り直しました。現時点でインストールされたDebian MySQLのバージョンは8.0.37でこの場合、my.cnf の
mysql_native_password=ON
があるとエラーになるようでコメントアウトするなり行削除すると動きました。
Qiitaさんにはいつも大変お世話になっております。貴重な情報をありがとうございました。