2014-11-14 46 views
5

我遇到了重新啓動dockerized postgres數據庫(我使用Core OS)的麻煩。該數據庫使用命令在一個bash腳本中啓動在碼頭環境中重新啓動postgres

# boot.sh 
sudo -i -u postgres /usr/lib/postgresql/9.3/bin/postgres -D /var/lib/postgresql/9.3/main -c config_file=/etc/postgresql/9.3/main/postgresql.conf 

它的工作原理。我有另一個由confd調用的腳本,當某些etcd鍵發生變化時(這部分沒問題,文件被正確調用),它會運行並且必須重新啓動postgres(不重新加載,因爲某些配置更改需要重新啓動)。下面是我試過的主要選擇,這失敗...

# restart.sh 
sudo -u postgres /usr/lib/postgresql/9.3/bin/pg_ctl --pgdata=/var/lib/postgresql/9.3/main restart 

系統地提出了一個錯誤:

%FATAL: lock file "postmaster.pid" already exists 
%HINT: Is another postmaster (PID 273) running in data directory "/var/lib/postgresql/9.3/main"? 

此外,

# restart.sh 
rm /var/lib/postgresql/9.3/main/postmaster.pid 
sudo -i -u postgres /usr/lib/postgresql/9.3/bin/postgres -D /var/lib/postgresql/9.3/main -c config_file=/etc/postgresql/9.3/main/postgresql.conf 

rm /var/lib/postgresql/9.3/main/postmaster.pid 
/etc/init.d/postgresql start 

/etc/init.d/postgresql restart 

exec su postgres -c "/usr/lib/postgresql/9.3/bin/postgres -D /var/lib/postgresql/9.3/main -c config_file=/etc/postgresql/9.3/main/postgresql.conf" 

失敗,

ERROR exit status 1 

任何想法?先謝謝你!

+0

一方面,包含這條線的restart.sh在我的Ubuntu服務器上沒有錯誤地運行:'sudo -i -u postgres /usr/lib/postgresql/9.3/bin/pg_ctl restart -D/var/LIB/PostgreSQL的/ 9.3/main'。 (我在你的問題中沒有看到這個語法。)另一方面,我沒有在Docker容器中運行它。 – 2014-11-14 17:34:43

+0

感謝邁克,它在ubuntu服務器上工作。這個問題似乎與核心操作系統或Docker有關,但我不知道它究竟是什麼...... – Raphael 2014-11-14 17:40:29

+0

嘗試添加-cap-add SYS_PTRACE到您的碼頭運行命令 – 2014-11-14 18:31:58

回答

3

對於我來說,改變配置和主機上做

$ docker restart <postgres_container> 

工作得很好。

+0

對我來說就像一個魅力。 – 2017-06-13 21:08:16