環境
- Docker for Windows
- MySQL:5.7
対象
- Docker for Windowsで立ち上げたMySQLコンテナで日本語を使いたい人
原因
なぜ日本語が使えないかというと、初期設定ではマルチバイト文字が使えない設定だからです。
問題解決
対処法としては、設定ファイル(/etc/mysql/my.cnf)に以下の設定を追記することです。
my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8
[mysqld]
character-set-server=utf8
なぜこの設定なのかは「Docker mysql 文字化け」とかでググってください。
この設定の追記方法ですが、docker-compose.ymlのvolumesで対応しようとするとWindowの場合パーミッションがおかしくなってしまうのでDockerfileで対応します。
/build/Dockerfile
FROM mysql:5.7
# my.cnf
RUN { \
echo '[client]'; \
echo 'default-character-set=utf8'; \
echo '[mysql]'; \
echo 'default-character-set=utf8'; \
echo '[mysqldump]'; \
echo 'default-character-set=utf8'; \
echo '[mysqld]'; \
echo 'character-set-server=utf8'; \
} >> /etc/mysql/my.cnf
docker-compose.ymlの書き方は自由ですが私はこんな感じです。
docker-compose.yml
version: '2'
services:
mysql:
container_name: mysql
build: "./build"
volumes:
- ./mysql_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
ports:
- 3306:3306
expose:
- "3306"
privileged: true