Скрытие вывода Docker Exec запроса Postgres - PullRequest
0 голосов
/ 25 марта 2019

Я использую скрипт Powershell для запуска контейнера Docker с Postgres:

docker run -p ${host_port}:${remote_port} --name $container_name -d $database_name

# 0b. Wait for the container and the postgres database to be ready
Do
{
    echo "Waiting for database system to start up..."
    $timeout++
    sleep 1
} until ((docker exec $container_name psql --username=$database_user_name --dbname=$database_name --command="SELECT 1;") -Or ($timeout -eq $timeout_limit))

if ($timeout -eq $timeout_limit) 
{
    Throw "Database system failed to start up."
    exit
}
else {
    # Do stuff
}

Проблема, с которой я столкнулся, заключалась в том, что база данных не всегда была готова к тому времени, когда я импортировал свою схему. Я добавил цикл «До», чтобы «пинговать» базу данных до тех пор, пока она не получит ответ или пока не пройдет 10 секунд.

Это работает хорошо. И это вывод консоли:

Waiting for database system to start up...
psql: FATAL:  the database system is starting up 
Waiting for database system to start up...

Есть ли способ предотвратить появление этой второй строки?

psql: FATAL:  the database system is starting up 

Я пытался перенаправить «пинг» на /dev/null, но при его выполнении это не получается,

docker exec $container_name psql --username=$database_user_name --dbname=$database_name --command="SELECT 1;" > /dev/null

1 Ответ

1 голос
/ 25 марта 2019

Полагаю, вам тоже нужно перенаправить Stderr. Как работает 2>&1 вместо >?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...