趣旨
上記の続きです。
お気軽mysqlはdbが日本語入力に対応していません。
また環境変数の関係でそもそもコンソールが日本語を受け付けません。
結論としては自分で手を入れてあげないといけないので、githubにrepoを作成しました。
- github
- docker hub
- コマンド(立ち上げ)
cmd
$ docker run --name iganari-db -e MYSQL_ROOT_PASSWORD=hogehoge -d igaguri/mysql-server-utf8
- コマンド(mysqlログイン)
cmd
$ docker exec -it iganari-db mysql -uroot -phogehoge
対応方法など
Dockerのコンテナで日本語を受け付けるようにする。
以下が参考になります。
「dockerのコンテナ実行時にLANGなどの環境変数を設定する方法」のコメント
要は以下をDockerfile内に書いてbuildします。
hub.dockerのmysql/mysql-serverの大元はgithubを確認すると、oraclelinuxを参照しているよう。
したがって、今回はcentosケースで設定出来ます。
- centos
Dockerfile
FROM centos
RUN yum -y reinstall glibc-common
RUN localedef -v -c -i ja_JP -f UTF-8 ja_JP.UTF-8; echo "";
env LANG=ja_JP.UTF-8
RUN rm -f /etc/localtime
RUN ln -fs /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
- ubuntu
Dockerfile
RUN locale-gen ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:en
ENV LC_ALL ja_JP.UTF-8
mysqlを日本語対応にする
こちらに関してはいつも通りにmy.cnfに設定していきます。
OSが違うと設定ファイルの場所が違いますが、
追記する最低限の内容は変わらないのでそこはよしなに変換して下さい。
- mysql設定をutf8にする
/etc/my.cnf
### 以下を追記する
[mysqld]
…
…
…
+ character-set-server=utf8
+ [client]
+ default-character-set=utf8
以上の設定を読み込めば、日本語の対応したMySQLが使えるようになります。
デモ(というかメモ)
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
igaguri/mysql-server-utf8 latest 707b002e4acc 5 weeks ago 1.055 GB
$
$
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7ae484154570 igaguri/mysql-server-utf8 "/entrypoint.sh mysql" 10 seconds ago Up 9 seconds 3306/tcp, 33060/tcp iganari-db
$
$
$ docker exec -it iganari-db mysql -uroot -phogehoge
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.17 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql>