隐藏Postgres查询的Docker Exec输出

时间:2019-03-25 19:01:37

标签: postgresql powershell docker

我正在使用Powershell脚本通过Postgres启动Docker容器:

sed "s/\(^[a-z,0-9]*\) \(.*\) \([a-z,0-9]*\)/\1 \2 \1/"

我遇到的一个问题是,在导入架构时,数据库并不总是准备就绪。我添加了Do-Until循环,以继续“ ping”数据库,直到获得响应或经过10秒钟为止。

这很好。这是控制台输出:

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
}

有什么方法可以防止第二行出现?

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

我尝试将“ ping”重定向到psql: FATAL: the database system is starting up ,但是像这样执行失败,

/dev/null

1 个答案:

答案 0 :(得分:1)

我想您也必须重定向Stderr。 2>&1而不只是>的工作方式是什么?