今回はpostgresqlをdocker環境で使用する時に、ロケールを予め日本に設定する方法をまとめました。
Dockerfile
こちらが日本語化を行う場合のDockerfileです。
FROM postgres:14.3
ENV DB_LANG=ja_JP
ENV LANG $DB_LANG.utf8
RUN localedef -i $DB_LANG -c -f UTF-8 -A /usr/share/locale/locale.alias $DB_LANG.UTF-8
localedefコマンドで日本の地域設定を行います。
Dockerfile側はこれで終了です。
docker-compose.yml
簡単に起動させるためにdocker-compose.yml
を準備します。
サンプルは以下のようになります。
services:
db_sample:
container_name: db_sample
hostname: db_sample
image: db_sample
build:
context: .
dockerfile: ./Dockerfile
ports:
[
"5432:5432"
]
environment:
POSTGRES_PASSWORD: #任意のパスワードを記入
TZ: "Asia/Tokyo"
設定項目は必要に応じて修正していただければと思います。
また、POSTGRES_PASSWORDには任意のパスワードを記入してください。
起動してみる
ディレクトリ構成は以下の通り
$ tree
.
├── docker-compose.yml
└── Dockerfile
以下のコマンドを叩きます。
docker compose up -d
コンテナが立ち上がったらコンテナ内にアタッチして確認してみます。
root@db_sample:/# psql -U postgres
psql (14.3 (Debian 14.3-1.pgdg110+1))
"help"でヘルプを表示します。
postgres=# SELECT name, setting, context FROM pg_settings WHERE name LIKE 'lc%';
name | setting | context
-------------+------------+-----------
lc_collate | ja_JP.utf8 | internal
lc_ctype | ja_JP.utf8 | internal
lc_messages | ja_JP.utf8 | superuser
lc_monetary | ja_JP.utf8 | user
lc_numeric | ja_JP.utf8 | user
lc_time | ja_JP.utf8 | user
(6 行)
ロケールがja_JP.utf8になっていればOKです。