在docker环境中重新启动postgres

时间:2014-11-14 17:16:11

标签: postgresql docker coreos confd

我重新启动了一个dockerized 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 个答案:

答案 0 :(得分:5)

对我来说,更改配置并执行

$ docker restart <postgres_container>
主机上的

工作正常。