4
3

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.

日本語が使えるようにDockerfileでロケール関連の設定をする

Last updated at Posted at 2023-02-06

はじめに

DockerでMySQLを使用する際、日本語対応に手こずりました。その時にLinuxの「ロケール」というものがよくわからず混乱したので、調べてまとめたいと思います。

ロケールとは

In computing, a locale is a set of parameters that defines the user's language, region and any special variant preferences that the user wants to see in their user interface. Usually a locale identifier consists of at least a language code and a country/region code
Locale (computer software) - Wikipedia

ロケールとは言語等を設定するのに必要なもののようです。

Dockerfileで何も設定しない場合

Dockerfile
FROM mysql:8.0-debian

上記のDockerfileのように、ロケールについて何も意識しないでDockerイメージを作成した場合、構築したコンテナのロケールがどのようになっているか確認します。

ロケールの設定を確認する

localeコマンドでロケールの設定を確認できます。

ターミナル
# locale

localeコマンドで現在設定されている環境変数の一覧が表示されます。

ターミナル
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

LANG、LANGUAGE、LC_ALL以外が「POSIX」に設定されています。

現在存在するロケールを確認する

ターミナル
# locale -a

aオプションで、現在システムの中にインストールされているロケールを確認できます。

ターミナル
C
C.UTF-8
POSIX

何もしないとロケールは3つだけのようです。

日本語を使用可能にするロケールの設定(Dockerfile)

Dockerfile
FROM mysql:8.0-debian

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

ENV LANG ja_JP.UTF-8

他の設定はせず、ロケールの日本語設定だけを考えたファイルです。

ロケールのインストール

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

ロケールを全てインストールすることで、今回使用したいと思っている「ja_JP.utf8」をダウンロードできます。
この「locales-all」でインストールすると、全部で496個のロケールがインストールされます。「ja_JP.utf8」だけインストールできないかと調べましたが、短時間では特に方法が見つけられなかったので、今回は「locales-all」で良いかなと思います。

環境変数の設定

Dockerfile
ENV LANG ja_JP.UTF-8

環境変数LANGにロケールの「ja_JP.UTF-8」を設定します。

日本語対応後のロケール設定

ターミナル
LANG=ja_JP.UTF-8
LANGUAGE=
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=

LANGを設定することで、LANGUAGE、LC_ALL以外の全ての環境変数が「ja_JP.UTF-8」となります。
いちおうLANGを設定することでターミナル上でも日本語は使えるようになりますが、何かの機会に使うかもしれないので、LANGUAGE、LC_ALLも設定した方が良いかもしれません。

参考

4
3
2

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
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?