在继续执行nosetests
之前,等待postgres
在我的ENTRYPOINT
内完全启动的最佳方法是什么?如何在入口点等待postgres的启动?
现在我已经在我的机器上启动了大约50秒的启动时间。所以我只是睡了60秒。这感觉不好,因为在另一台机器上运行时这可能不起作用。
ENTRYPOINT \
runuser -l 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 & ' && \
sleep 60 && \
nosetests --verbose --cover-erase --with-coverage --cover-package=stalker
这是启动postgres
的输出:
2017-02-13 13:46:49.541 UTC [9] LOG: database system was interrupted; last known up at 2017-02-13 12:53:23 UTC
2017-02-13 13:47:37.951 UTC [9] LOG: database system was not properly shut down; automatic recovery in progress
2017-02-13 13:47:37.994 UTC [9] LOG: redo starts at 0/1783EA0
2017-02-13 13:47:37.995 UTC [9] LOG: record with zero length at 0/17841E8
2017-02-13 13:47:37.995 UTC [9] LOG: redo done at 0/17841B8
2017-02-13 13:47:37.995 UTC [9] LOG: last completed transaction was at log time 2017-02-13 12:53:23.731984+00
2017-02-13 13:47:38.384 UTC [9] LOG: MultiXact member wraparound protections are now enabled
2017-02-13 13:47:38.387 UTC [7] LOG: database system is ready to accept connections
2017-02-13 13:47:38.387 UTC [13] LOG: autovacuum launcher started
请,我不明白,这不利于在ENTRYPOINT
运行多个命令的约定。在这种情况下,我有很好的理由这样做。
您可以运行['pg_isready'](https://www.postgresql.org/docs/current /static/app-pg-isready.html),而返回代码为1. –