ja_JP.UTF-8ロケールを指定したPostgreSQL Dockerコンテナを作る
Docker for Mac で 日本語locale設定を含む PostgreSQL を構築 - Qiita を参考にした。
要点
DockerHubで配布されているPostgreSQLコミュニティ公式のDockerイメージでは、日本語ロケールが有効になってない。よって、有効化したイメージを作成(ビルド)する。
イメージの作成
ここでは、公式のPostgreSQL 9.6.1イメージをベースとして、9.6.1_jaという名前のイメージを作成する。
- 任意の空ディレクトリを作る。以後、このディレクトリ内で作業する。
次の通りDockerfileを作成する。
FROM postgres:9.6.1 RUN localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8 ENV LANG ja_JP.utf8
ビルドする。
docker build -t postgres:9.6.1_ja .
コンテナの起動
initdbの引数を指定してコンテナを起動する。--nameは自分の管理しやすい名称にする(つけなくても良い)。
docker run --name xxxxxxxx -d -p 5432:5432 -e POSTGRES_INITDB_ARGS="--encoding=UTF-8 --locale=ja_JP.UTF-8" postgres:9.6.1_ja
2019-10-03 追記
どうやらPostgreSQL 10.xのコンテナイメージでは、POSTGRES_INITDB_ARGS の指定が不要になったっぽい。localedef と 環境変数の設定は引き続き必要。