さくっとpostgresを動かしたくてDockerで起動しようとしたところ、少しハマったのでメモ。
結論
docker-compose.ymlとDockerfileを最終的に以下のようにファイルを記述したところ動いた。
# docker-compose.yml
services:
db:
build: .
container_name: postgres
ports:
- 5432:5432
volumes:
- ./db/data:/var/lib/postgresql/data
environment:
POSTGRES_USER: 'user'
POSTGRES_PASSWORD: 'postgres'
POSTGRES_DB: "database_name"
TZ: "Asia/Tokyo"
LANG: "ja_JP.UTF-8"
LANGUAGE: "ja_JP:ja"
LC_ALL: "ja_JP.UTF-8"# Dockerfile
FROM postgres:16
RUN apt update && \
apt install -y locales && \
sed -i -E 's/# (ja_JP.UTF-8)/\1/' /etc/locale.gen && \
locale-gen ja-JP.UTF-8原因
localeに日本語がなかったせい。ja-JP.UTF-8を追加すれば良いのだけれども、ちょっと調べて出てきた方法ではうまくいきません。
手順は以下の通り。
- localesパッケージをインストール
- 設定ファイル(
/etc/locale.gen)を変更して日本語ロケールを生成可能にする - 日本語ロケールを生成
これをDockerfile内で行い、docker-compose.ymlで環境設定すると無事動きました。

コメント