Перезапустите postgres в среде докера

У меня проблемы с перезапуском базы данных postgres (я использую Core OS). База данных запускается в bash-скрипте с помощью команды

# 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

Есть мысли? Заранее спасибо!

1 ответ

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

$ docker restart <postgres_container>

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

Другие вопросы по тегам