19
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DockerのMySQLコンテナを日本語対応させる

Last updated at Posted at 2020-07-18

『SQL ゼロからはじめるデータベース操作』の演習をDocker & MySQLでやろうとして、日本語が入力できない現象につまづいた時のメモです。

##最終的な構成
全部同じ場所に置いてください

docker-compose.yml
version: "3"

services:
  mysql:
    build:
      context: .
    environment:
      MYSQL_ROOT_PASSWORD: "password"
      MYSQL_USER: "root"
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql

volumes:
  mysql_data:
    driver: local
Dockerfile
FROM mysql:5.7

RUN apt-get update
RUN apt-get -y install locales-all

ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8

COPY mysqld_charset.cnf /etc/mysql/conf.d/mysqld_charset.cnf
mysqld_charset.cnf
[mysqld]
character_set_server=utf8
character_set_filesystem=utf8
collation-server=utf8_general_ci
init-connect='SET NAMES utf8'
init_connect='SET collation_connection = utf8_general_ci'
skip-character-set-client-handshake

内容

①Debianのlocaleを設定する

環境変数でlocaleを日本に指定しないとそもそもコマンドラインで日本語を打つことが出来ないようです。

以下の記事を参考に設定します。
[Debian]Debian stretchのDockerコンテナを日本語化する

②MySQLの文字コードをutf8に設定する

今度はMySQL側の設定です、MySQLはデフォルトでlatin1という日本語を扱えない文字コードが設定されているのでこれをutf8に変更します。

コンテナ内部のMySQL設定を変更するには一工夫必要で、設定情報を書いた.cnfファイルを/etc/mysql/conf.d/以下に配置することで設定を反映させます。
この辺はググれば情報が出てくると思うので適宜調べてください。

以下を参考にしました。
dockerのMySQLのutf8文字コードのイメージを作る

最後に

Docker便利ですけど環境変数や設定周りでつまづくことが多くて大変…

19
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?