10
8

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 1 year has passed since last update.

Docker mysqlコンテナで日本語入力できない

Last updated at Posted at 2022-03-23

何が起きたか?

docker公式mysqlコンテナを使用していたのですが、添付画像のように
mysqlコンテナ内に入って、bashで日本語入力してエンターを押すと
入力した日本語が消える問題が発生しました。
スクリーンショット 2022-03-23 22.45.46.png

※半角英数字は入力、実行ともに出来る。

原因

原因としては下記参考URLにもありますが、
・databaseの文字コードが対応していない
・日本語環境を追加していない
の二つでした。

参考URL↓
https://teratail.com/questions/268253

解決方法

まず、docker-compose.ymlしか定義していない場合は、
db用のDockerfileを作成する必要があります。

下記が実際に解決したDokcerfile定義になります。
省力している箇所もありますが各プロジェクトに合わせて、
随時修正して下さい。

docker-compose.yml
db:
    image: mysql:8.0
    container_name: sample
    ###### 省略 ######
    # 以下追加
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    # ここまで

続いてDockerfile

FROM mysql:8.0

COPY my.cnf /etc/mysql/conf.d/my.cnf

# 日本語環境を追加
RUN apt-get update && apt-get install -y locales \
    && sed -i -e 's/# \(ja_JP.UTF-8\)/\1/' /etc/locale.gen \
    && locale-gen \
    && update-locale LANG=ja_JP.UTF-8
# ここまで

ENV LC_ALL ja_JP.UTF-8

ENV TZ Asia/Tokyo
ENV LANG=ja_JP.UTF-8

CMD ["mysqld"]

EXPOSE 3306

以上の設定でdocker公式mysqlコンテナでも、
日本語が扱えるようになっているはずです!

これでやっと日本語のinsertが実行できる。。。
今やDockerは必須スキルになりつつあるなぁ〜

10
8
1

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
10
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?