Dockerでpostgresが起動しない

programing IT
programing

さくっとpostgresを動かしたくてDockerで起動しようとしたところ、少しハマったのでメモ。

結論

docker-compose.ymlDockerfileを最終的に以下のようにファイルを記述したところ動いた。

# 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を追加すれば良いのだけれども、ちょっと調べて出てきた方法ではうまくいきません。
手順は以下の通り。

  1. localesパッケージをインストール
  2. 設定ファイル(/etc/locale.gen)を変更して日本語ロケールを生成可能にする
  3. 日本語ロケールを生成

これをDockerfile内で行い、docker-compose.ymlで環境設定すると無事動きました。

コメント

タイトルとURLをコピーしました