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