PostgreSQLのDockerコンテナでタイムゾーンを設定する

PostgreSQLのデフォルトのタイムゾーンはUTCです。TZ 環境変数を設定するだけでは、Dockerコンテナで起動したPostgreSQLのタイムゾーン設定は変更されません。PostgreSQLのタイムゾーンを変更するには、以下のように postgresql.conf ファイルを変更するか、環境変数 POSTGRES_TZ を使用します。

postgresql.confで設定

PostgreSQLの設定ファイルでタイムゾーンを変更するには、以下のように docker-compose.yml にボリュームをマウントして設定を上書きします。
TZ 環境変数はコンテナ自身のタイムゾーン設定です。

docker-compose.yml
version: '3.9'

services:
  postgresql_db:
    image: postgres:14
    container_name: local-db
    ports:
      - 5432:5432
    restart: always
    volumes:
      - db-data:/var/lib/postgresql/data
      - ./postgresql.conf:/etc/postgresql/postgresql.conf
    environment:
      - POSTGRES_USER=xxxx
      - POSTGRES_PASSWORD=xxxxx
      - POSTGRES_DB=xxxxx
      - TZ=Asia/Tokyo

volumes:
  db-data:

postgresql.confには以下を記述します。

timezone = 'Asia/Tokyo'

環境変数POSTGRES_TZで設定

POSTGRES_TZは、PostgreSQL のタイムゾーンを設定するための環境変数です。この変数に指定した値により、デフォルトのタイムゾーンが変更されます。

docker-compose.yml
version: '3.9'

services:
  postgresql_db:
    image: postgres:14
    container_name: local-db
    ports:
      - 5432:5432
    restart: always
    volumes:
      - db-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=xxxx
      - POSTGRES_PASSWORD=xxxxx
      - POSTGRES_DB=xxxxx
      - POSTGRES_TZ=Asia/Tokyo
      - TZ=Asia/Tokyo

volumes:
  db-data:

Dockerコンテナの時刻を確認する方法

次のコマンドを実行することで、Dockerコンテナの現在時刻が確認できます。

docker exec -it コンテナ date
このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

コメント

メールアドレスが公開されることはありません。 が付いている欄は必須項目です