開発部のTです。
今回はCentOSのDockerコンテナで日本語ロケール設定方法について紹介します。
CentOSでのロケール設定方法
以下Dockerfileのサンプルです。
FROM centos:centos7 RUN rm -f /etc/rpm/macros.image-language-conf && \ sed -i '/^override_install_langs=/d' /etc/yum.conf && \ yum -y reinstall glibc-common && \ yum clean all ENV LANG="ja_JP.UTF-8" \ LANGUAGE="ja_JP:ja" \ LC_ALL="ja_JP.UTF-8" CMD bash
補足
これまでは以下の様なDockerfileでもロケールの設定ができていたのですが、1392855 – build-locale-archive: build-locale-archive.c:301: fill_archive: Assertion `used < head->namehash_used' failed.で報告されている不具合によって、去年末頃からロケールの設定ができなくなっています。
FROM centos:centos7 RUN yum -y update && \ yum -y reinstall glibc-common && \ yum clean all ENV LANG="ja_JP.UTF-8" \ LANGUAGE="ja_JP:ja" \ LC_ALL="ja_JP.UTF-8" CMD bash
# コンテナ内でlocale -aを実行してもCロケールとPOSIXロケール以外が存在しない。コマンド実行する度にwarningログが出力される。 $ locale -a /bin/sh: warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8) locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_COLLATE to default locale: No such file or directory C POSIX
そのため、glibc-commonを再インストールする前にrm -f /etc/rpm/macros.image-language-conf
とsed -i '/^override_install_langs=/d' /etc/yum.conf
を実行することで不具合を回避しています。