我想更改postgres配置的以下参数,tcp_keepalives_count
,tcp_keepalives_idle
,tcp_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
答案 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文件装入容器的卷,并在自定义命令中指定位置。