Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 更改postgres docker容器中tcp_keepalives设置的正确方法_Postgresql_Docker_Tcp_Docker Compose - Fatal编程技术网

Postgresql 更改postgres docker容器中tcp_keepalives设置的正确方法

Postgresql 更改postgres docker容器中tcp_keepalives设置的正确方法,postgresql,docker,tcp,docker-compose,Postgresql,Docker,Tcp,Docker Compose,我想更改postgres配置的以下参数,tcp\u keepalives\u count,tcp\u keepalives\u idle,tcp\u keepalives\u interval 建议用什么方法来改变它们 下面是我的docker compose.yml postgres: restart: always image: postgres:latest volumes: - /data:/var/lib/postgresql ports: - "5432

我想更改postgres配置的以下参数,
tcp\u keepalives\u count
tcp\u keepalives\u idle
tcp\u keepalives\u interval

建议用什么方法来改变它们

下面是我的
docker compose.yml

postgres:
  restart: always
  image: postgres:latest
  volumes:
    - /data:/var/lib/postgresql
  ports:
    - "5432:5432"
  environment:
    - POSTGRES_USER=admin
    - POSTGRES_PASSWORD=postgres
    - POSTGRES_DB=postgres
更新

我最终修改了我的
docker撰写文件

postgres:
  restart: always
  image: postgres:latest
  container_name: postgres
  volumes:
    - /data:/var/lib/postgresql
  ports:
    - "5432:5432"
  environment:
    - POSTGRES_USER=admin
    - POSTGRES_PASSWORD=postgres
    - POSTGRES_DB=postgres
  command: postgres -c tcp_keepalives_idle=60 -c tcp_keepalives_interval=60 -c tcp_keepalives_count=60

您可以将选项放在
postgresql.conf
文件中,并将
postgres
命令更改为指向自定义配置。如果要对所有数据库执行此操作,可以使用简单的Dockerfile从基本映像构建自定义映像:

FROM postgres
COPY ./postgresql.conf /etc/postgresql/postgresql.conf
CMD ["postgres", "-c", "config_file=/etc/postgresql/postgresql.conf"]
其中conf文件可以具有您需要的任何设置:

tcp_keepalives_count=10
tcp_keepalives_idle=60
tcp_keepalives_interval=60
构建该映像并运行它,您将获得默认映像的所有行为(初始化DB、设置密码等),但使用自定义配置:

docker exec -it 0a bash
root@0a3e2cc18b76:/# psql -U postgres
psql (9.5.4)
Type "help" for help.  

postgres=# SHOW config_file;
    config_file
    ---------------------------------
    /etc/postgresql/postgresql.conf
    (1 row) 

如果您不想构建映像,可以在编写文件中执行类似的操作:添加一个卷,将本地conf文件装载到容器中,并在自定义命令中指定位置。

谢谢,@Elton,尽管最后我使用
命令
参数更改了docker编写文件。我相信它也会有同样的效果,对吗?