【发布时间】:2015-01-12 03:56:34
【问题描述】:
我无法重新启动 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
有什么想法吗?提前谢谢!
【问题讨论】:
-
一方面,只包含这一行的 restart.sh 在我的 Ubuntu 服务器上正常工作:
sudo -i -u postgres /usr/lib/postgresql/9.3/bin/pg_ctl restart -D /var/lib/postgresql/9.3/main。 (我在你的问题中没有看到这种语法。)另一方面,我没有在 Docker 容器中运行它。 -
感谢 Mike,它确实可以在 ubuntu 服务器上运行。这个问题似乎与 Core OS 或 Docker 相关,但我还不知道它到底是什么......
-
尝试将 –cap-add SYS_PTRACE 添加到您的 docker run 命令中
标签: postgresql docker coreos confd