手帳

  • 2025-02-13
  • IT系

最近はVSCode + Remote SSH + Docker + Githubでばかり仕事をしています。

先日、MySQL8.0のDocker Imageから立ち上げたコンテナ内でMySQLコマンドでデータを更新しようと思ったところ、コマンドラインに日本語を送れないという状況に遭遇しました。

上の写真でこの後「エンター」を押すと「あいうえお」が消えて改行されてしまいます。
結論から言うと、これはMySQLの問題ではなく、MySQL 8.0の公式イメージのベースのOS(Red Hat Universal Base Image(UBI)8をベースにしているらしい)が日本語用の言語パッケージをデフォルトで要れていないのでそれを入れて設定してあげる必要があります。

docker-compse.ymlファイルで、image指定をコメントアウトしてDockerfileを指定します。

  db:
    #image: mysql:8.0
    container_name: jms2-mysql
    build:
      context: ./docker/mysql   # mysqlディレクトリのパス
      dockerfile: Dockerfile

Dockerfileで、

FROM mysql:8.0

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

# 日本語環境を追加
RUN microdnf update && microdnf install -y glibc-locale-source glibc-langpack-ja \
    && localedef -i ja_JP -f UTF-8 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

こんな感じで日本語ロケールに必要なパッケージをインストールして、インストールしたパッケージを使って実際に日本語ロケールを生成するという感じです。