0

我在任务组中有两个任务 1)一个 db 任务来启动一个 db 和 2)需要启动 db 的应用程序。

两者都是并行启动的,db 任务需要一点时间,但到那时应用程序会识别出 db 未启动并终止 db 任务。有什么解决办法吗?请指教。

4

1 回答 1

0

有一个入口点脚本来检查数据库是否健康是很常见的。这是我以前使用过的脚本:

#!/bin/sh

set -e
cmd="$*"

postgres_ready() {
    if test -z "${NO_DB}"
    then
        PGPASSWORD="${RDS_PASSWORD}" psql -h "${RDS_HOSTNAME}" -U "${RDS_USERNAME}" -d "${RDS_DB_NAME}" -c '\l'
        return $?
    else
        echo "NO_DB Postgres will pretend to be up"
        return 0
    fi
}


until postgres_ready
do
    >&2 echo "Postgres is unavailable - sleeping"
    sleep 1
done

>&2 echo "Postgres is up - continuing..."

exec "${cmd}"

您可以将其另存为entrypoint.sh并使用应用程序启动脚本作为参数运行它。例如:entrypoint.sh python main.py

于 2019-01-17T01:41:39.627 回答