所有的教程都指出了以
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'为什么我们的码头档案里不能有:
ENTRYPOINT ["/etc/init.d/postgresql-9.2", "start"]然后简单地启动容器
docker run -d psql这不是入口点的目的还是我遗漏了什么?
发布于 2014-02-20 05:16:44
区别在于,/etc/init.d中提供的init脚本不是入口点。它的目的是完全不同的;让入口点开始,在后台,然后向调用者报告成功或失败。该脚本导致postgres进程(通常通过pg_ctl间接启动)与控制终端分离。
要使对接器最佳工作,它需要直接运行应用程序,并附加到对接进程。这样,当用户请求时,它就可以有效地、通用地终止它,或者快速发现并响应进程崩溃。
发布于 2014-09-08 17:18:41
这就是IfLoop所说的例子。
在Dockerfiles中使用CMD:
USE postgres
CMD ["/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 run -d -p 5432:5432 psql观看PostgeSQL日志:
$docker logs -f POSTGRES_CONTAINER_IDhttps://stackoverflow.com/questions/21898152
复制相似问题