LoginSignup
156
139

More than 5 years have passed since last update.

Docker: コンテナのlocaleを設定したい

Last updated at Posted at 2014-07-22

DockerでbuildしたイメージはロケールがPOSIXになっている。これに起因して、文字コード変換まわりの不具合が発生したりする。

% 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=

よくあるLinuxのTipsとして /etc/default/locale をセットすればデフォルトのロケールを変更できるが、docker runしただけではこのファイルが読み込まれないらしくDockerでは通用しない。

dotcloud/dockerのissueでもこれについての質問があったが、中の人の回答ではENVとして設定すればいいとのこと。

そしてこれがDockerfileに書く設定

RUN locale-gen en_US.UTF-8  
ENV LANG en_US.UTF-8  
ENV LANGUAGE en_US:en  
ENV LC_ALL en_US.UTF-8

※この設定はUbuntuで効果があるとのことなので、CentOSはこの方法でやってみてください

これでdocker buildすればデフォルトのロケールが変更される。

% locale
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
156
139
3

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
156
139