開発部の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を実行することで不具合を回避しています。