【发布时间】:2019-05-18 06:34:04
【问题描述】:
我在任务组中有两个任务 1)一个数据库任务来启动一个数据库和 2)需要数据库启动的应用程序。
两者都是并行启动的,db 任务需要一点时间,但到那时应用程序会识别出 db 未启动并终止 db 任务。有什么解决办法吗?请指教。
【问题讨论】:
标签: database delayed-job nomad
我在任务组中有两个任务 1)一个数据库任务来启动一个数据库和 2)需要数据库启动的应用程序。
两者都是并行启动的,db 任务需要一点时间,但到那时应用程序会识别出 db 未启动并终止 db 任务。有什么解决办法吗?请指教。
【问题讨论】:
标签: database delayed-job nomad
有一个入口点脚本来检查数据库是否健康是很常见的。这是我以前用过的一个脚本:
#!/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
【讨论】: