2014-11-14 6 views
5

У меня проблемы с перезагрузкой базы данных 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, который запускается при изменении некоторых ключей и т.д. (эта часть в порядке, файл правильно вызывается) и должен перезапускать 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/Библиотека/PostgreSQL/9,3/main'. (Я не вижу этого синтаксиса в вашем вопросе.) С другой стороны, я не запускаю его в контейнере Docker. –

+0

Спасибо, Майк, он работает на сервере ubuntu. Проблема, похоже, связана с Core OS или Docker, но я пока не знаю точно, в чем состоять ... – Raphael

+0

попробуйте добавить -cap-add SYS_PTRACE в команду запуска docker –

ответ

3

Для меня, изменение конфигурации и делать

$ docker restart <postgres_container> 

на хосте работает просто отлично.

+0

Работает как очарование для меня. –

Смежные вопросы