所有 tutorials指出以
的格式运行 postgresdocker run -d -p 5432 \
-t <your username>/postgresql \
/bin/su postgres -c '/usr/lib/postgresql/9.2/bin/postgres \
-D /var/lib/postgresql/9.2/main \
-c config_file=/etc/postgresql/9.2/main/postgresql.conf'
为什么我们的 Docker 文件中不能:
ENTRYPOINT ["/etc/init.d/postgresql-9.2", "start"]
只需启动容器
docker run -d psql
这不是 Entrypoint 的目的还是我遗漏了什么?
最佳答案
区别在于 /etc/init.d
中提供的初始化脚本不是入口点。它的目的是完全不同的;在后台启动入口点,然后向调用者报告成功或失败。该脚本会导致 postgres
进程(通常通过 pg_ctl
间接启动),与控制终端分离。
为了使 docker 发挥最佳性能,它需要直接运行应用程序,附加到 docker 进程。这样它就可以在用户请求时有用地和一般地终止它,或者快速发现并响应进程崩溃。
关于postgresql - 为什么不能使用 "service postgres start"在 docker 中启动 postgres?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21898152/