覆盖Postgres Docker容器中的单个配置

时间:2019-05-22 10:06:34

标签: postgresql docker

我正在尝试覆盖官方Postgres Docker图像的Postgres配置中的单个项目。即,我想覆盖log_statement属性并将其设置为all

尝试过:

docker run -d -e POSTGRES_PASSWORD=postgres postgres -c 'log_statement=all' 

进入docker容器并执行:

cat /var/lib/postgresql/data/postgresql.conf | grep log_statement

仍将获得默认值none

但没有成功。

关于Postgres Docker的配置有一些答案/问题,但他们建议替换完整的postgresql.conf文件。

3 个答案:

答案 0 :(得分:1)

来自docs

  

命令行选项将覆盖postgresql.conf中的所有冲突设置。请注意,这意味着您将无法通过编辑postgresql.conf即时更改该值,因此尽管命令行方法可能很方便,但以后可能会增加灵活性。

据我了解,这不会更改postgresql.conf,但实际上会运行带有所需选项的postgres命令。这可能就是为什么在配置文件中看不到设置为all的值的原因。

希望有帮助。

答案 1 :(得分:0)

我的解决方案是将Postgres配置文件挂载到服务器上的某个位置并对其进行编辑。

答案 2 :(得分:0)

我在我的电脑上测试了您的问题。 在postgresql.conflog_statement="none"被注释。 手动进行分解,即可解决您的问题。

docker exec -it postgres bash

放入容器:

  • apt update
  • apt install vim
  • vim /var/lib/postgresql/data/postgresql.conf
  • 搜索您要查找的内容并手动进行更改。
  • 停止/启动容器。

那是我的解决方法。