Docker Postgresql 13 修改时区

1. 问题描述


使用DockerHub 官方镜像,启动了一个Postgres 13 的 Container ,使用过程中,发现时区错误,无论如何修改 TimeZone 都是UTC

postgres=# show timezone;
 TimeZone
----------
 UTC
(1 row)

需要永久修改为 Asia/Shanghai

2. 尝试过的方法


a. 使用psql语句 set timezone='Asia/Shanghai'; ;
退出psql环境再次连接后timezone恢复了 --> 无效

b. 通过修改container下的config.v2.json文件,在Env里面加入"TZ=Asia/Shanghai""PGTZ=Asia/Shanghai";
重启docker & 重启container --> 无效

c. 通过修改container下的psql的配置文件postgresql.conf, 修改timezone='Asia/Shanghai'log_timezone='Asia/Shanghai'
重启docker & 重启container --> 无效

3. 解决方法


修改container自身的timezone

>> ln -sf /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
>> echo 'Asia/Shanghai' > /etc/timezone

最后: docker restart container_xxx --> 成功

4. 总结


postgresql container 使用了container本地的 timezone

参考:

  1. https://www.postgresql.org/docs/13/runtime-config-client.html#RUNTIME-CONFIG-CLIENT-FORMAT
  2. https://www.postgresql.org/docs/13/datatype-datetime.html#DATATYPE-TIMEZONES
  3. In container, "/etc/localtime" allways points to "/usr/share/zoneinfo/UTC"
  4. Postgres 13 Docker Hub Image

你可能感兴趣的:(Docker Postgresql 13 修改时区)