我想更改 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文件
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
构建该镜像并运行它,您将获得默认镜像的所有行为(初始化数据库、设置密码等),但使用您的自定义配置:
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 文件挂载到容器中,并在自定义命令中指定位置。
关于postgresql - 更改 postgres docker 容器中 tcp_keepalives 设置的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39656989/