docker中postgresql设置时区重启不生效问题

问题遇到的现象和发生背景

我的postgresql数据库放在dockers中的,因为时区是utc所以我想修改为PRC,所以我修改了容器中的配置文件

运行结果及报错内容
  1. 使用ps -ef | grep postgresql 查看容器中的数据库使用配置文件的位置
  2. 将容器中的配置文件复制出来,修改对应内容后在复制进容器
    ```plain
    log_timezone = 'PRC'

timezone = 'PRC'

```
3. 重启容器

  1. 但是我重启容器后,show time zone; 还是Etc/UTC
    我想要达到的结果
    我想要知道为什么,以及如何修改

你重启以后,容器内所做的所有操作就又重置了,所以你的环境肯定不适合这样操作
我找了一篇,你可以参考一下
https://blog.csdn.net/michaelwoshi/article/details/103751664

把时间的配置文件映射到宿主机

操作docker容器
1、查看当前所有的容器

docker ps -a

如果权限不够就在前面加上sudo。

2、找到docker容器ID

根据第一步,找到postgresql的容器idCONTAINER ID,比方是a3a3a3a3

3、拷贝postgresql.conf文件到服务器某个目录

sudo docker cp a3a3a3a3:/var/lib/postgresql/data/postgresql.conf /apps/omp/
1
拷贝到/apps/omp/目录下。

4、编辑postgresql.conf文件

sudo vi postgresql.conf

在命令模式下查找timezone关键字,/timezone,会定位到字符串的位置,想查找下一个,按"n"。

输入 i 进入编辑模式,开始编辑文本。

将timezone = 'Etc/UTC'修改成timezone = 'PRC'

按esc,再查询下一个timeout,都改成PRC。

最后保存并退出,:wq

5、复制修改后的文件到容器

sudo docker cp /apps/omp/postgresql.conf a3a3a3a3:/var/lib/postgresql/data/

这个命令会直接覆盖原来的文件。

6、重启容器

sudo docker restart a3a3a3a3

至此,修改已全部完成。

1)show timezone 显示时区
2)set time zone ‘PRC’ 修改时区