Postgresql 更改postgres docker容器中tcp_keepalives设置的正确方法
我想更改postgres配置的以下参数,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
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编写文件。我相信它也会有同样的效果,对吗?