postgresql - 为什么不能使用 "service postgres start"在 docker 中启动 postgres?

标签 postgresql docker

所有 tutorials指出以

的格式运行 postgres
docker 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/

相关文章:

java - MMO java引擎的概念设计

Docker 不断写入系统日志,填满整个磁盘

linux - Kubernetes 工作节点 cpu 和内存请求始终保持为零

docker - 在Docker Swarm模式下拥有更多副本有什么影响?

go - 如何将库从 github 导入到 GO playground?

java - 将参数传递给 java 准备语句

postgresql - PostGIS 是否会在插入 WKT 时自动转换?

html - 动态查询结果到 HTML 表格

java - 如何在宿主机中使用docker-build库bin

ruby-on-rails - rake 数据库 :Create will not connect to PostGresql and set up database