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

时间:2016-09-23 09:12:29

标签: postgresql docker tcp docker-compose

我想更改postgres配置的以下参数,tcp_keepalives_counttcp_keepalives_idletcp_keepalives_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-compose file

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

1 个答案:

答案 0 :(得分:3)

您可以将选项放在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

构建该图像并运行它,您将获得默认图像的所有行为(初始化数据库,设置密码等),但使用自定义配置:

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) 

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