【发布时间】:2017-07-01 13:27:56
【问题描述】:
在继续执行nosetests 之前,等待postgres 在我的ENTRYPOINT 中完全启动的最佳方法是什么?
现在我已将机器上的启动时间设置为 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 中运行多个命令的惯例。在这种情况下,我有充分的理由这样做。
【问题讨论】:
-
您可以在返回码为 1 时循环运行
pg_isready。
标签: bash postgresql docker