Jaki byłby najlepszy sposób oczekiwania na postgres
, aby w pełni rozpocząć pracę z moim ENTRYPOINT
przed przejściem do wykonywania nosetests
?Jak czekać na uruchomienie PostgreSQL w ENTRYPOINT?
W tej chwili mam czas rozruchu na moim komputerze do około 50 sekund. Więc śpię tylko przez 60 sekund. To nie jest dobre, ponieważ może nie działać, gdy jest uruchamiany na innej maszynie.
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
Jest to wyjście z uruchomieniem 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
Proszę, ja rozumiem, że to jest sprzeczne z konwencją prowadzenia wielu poleceń w ENTRYPOINT
. Mam dobre powody, aby to zrobić w tym przypadku.
można uruchomić [ 'pg_isready'] (https://www.postgresql.org/docs/current /static/app-pg-isready.html) w pętli, podczas gdy kod powrotu to 1. –