##はじめに
dockerのコンテナの中でmysqlを使用してテーブル表示させたら、日本語で登録しているところが????になっていました。
日本語でちゃんと表示できるように設定します。
##解決策
ローカルのアプリのsrc/db/にmy.cnfというファイルを作成して下記の記述をします。
コンテナの中のmysqlの設定ファイルの内容をこのファイルに書いてそれをコンテナのファイルにコピーします。
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
default-authentication-plugin = mysql_native_password
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-server=utf8mb4
[client]
default-character-set = utf8mb4
docker-compose.ymlのvolumes:に下記を追加します。
#~省略~
- ./src/db/my.cnf:/etc/mysql/my.cnf
#~省略~
あとはコンテナを立て直してデータベースを見ると日本語で表記されていました。
##うまくいかなかったこと
この解決策をいろいろ調べていたらdocker-compose.ymlのcommand: に下記の記述を追加すればいいという回答がたくさん出てきました。
#~省略~
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
しかし、うまくいきませんでした。
もし上記のcommandが実行されていた場合にmysqlの設定に記述されるものが先ほど紹介したmy.cnfの中身です。
コマンドで設定するやり方を諦めて、自分で作ってコンテナにコピーといった感じでしょうか。
##最後に
日本語表示はうまくいったのですが、コンソールから日本語を入力してもenterを押すと消えてしまいます。
次はそれを解決しなければ。。。