Что было бы лучшим подходом ждать postgres
, чтобы полностью запустить внутри моего ENTRYPOINT
, прежде чем переходить на выполнение 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
. У меня есть веские причины сделать это в этом случае.
Вы можете запустить [ 'pg_isready'] (https://www.postgresql.org/docs/current /static/app-pg-isready.html) в цикле, в то время как код возврата равен 1. –