2016-09-23 88 views
1

我想更改postgres配置的以下參數,tcp_keepalives_count,tcp_keepalives_idletcp_keepalives_interval在postgres docker容器中更改tcp_keepalives設置的正確方法

什麼是推薦的方法來改變它們?

以下是我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 

UPDATE

最後我修改我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 

回答

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 
[email protected]:/# 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文件掛載到容器中的卷,並在自定義命令中指定位置。

+0

謝謝,@Elton,儘管我最終用'command'參數更改了我的docker-compose文件。我相信它會有同樣的效果,對吧? – kampta

+0

是的,同樣的事情。 –

相關問題