ja_JP.UTF-8ロケールを指定したPostgreSQL Dockerコンテナを作る

Docker for Mac で 日本語locale設定を含む PostgreSQL を構築 - Qiita を参考にした。

要点

DockerHubで配布されているPostgreSQLコミュニティ公式のDockerイメージでは、日本語ロケールが有効になってない。よって、有効化したイメージを作成(ビルド)する。

イメージの作成

ここでは、公式のPostgreSQL 9.6.1イメージをベースとして、9.6.1_jaという名前のイメージを作成する。

  1. 任意の空ディレクトリを作る。以後、このディレクトリ内で作業する。
  2. 次の通り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
    
  3. ビルドする。

     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 と 環境変数の設定は引き続き必要。