37 lines
1.4 KiB
Bash
Executable File
37 lines
1.4 KiB
Bash
Executable File
#!/bin/sh
|
|
# 后端启动入口:按 *_ENABLED 开关动态等待依赖就绪,再启动应用。
|
|
# 仅等待「实际启用」的依赖,避免硬等待未启用的可选服务(与 environment-config-design 一致)。
|
|
# 某依赖超时未就绪只告警不阻断——应用自身应具备连接重试逻辑。
|
|
set -e
|
|
|
|
WAIT_TIMEOUT="${WAIT_TIMEOUT:-60}"
|
|
WAIT=""
|
|
|
|
# postgres:正式环境(DATABASE_TYPE=pgsql)必需依赖
|
|
if [ "${DATABASE_TYPE}" = "pgsql" ]; then
|
|
WAIT="$WAIT ${POSTGRES_HOST:-hunjing-postgres}:${POSTGRES_PORT:-5432}"
|
|
fi
|
|
|
|
# 可选依赖:仅在对应开关启用时等待
|
|
if [ "${REDIS_ENABLED}" = "true" ]; then
|
|
WAIT="$WAIT ${REDIS_HOST:-hunjing-redis}:${REDIS_PORT:-6379}"
|
|
fi
|
|
if [ "${VECTOR_DB_ENABLED}" = "true" ] && [ "${VECTOR_DB_TYPE}" = "milvus" ]; then
|
|
WAIT="$WAIT ${MILVUS_HOST:-hunjing-milvus}:${MILVUS_PORT:-19530}"
|
|
fi
|
|
if [ "${GRAPH_DB_ENABLED}" = "true" ]; then
|
|
case "${GRAPH_DB_TYPE}" in
|
|
neo4j) WAIT="$WAIT ${NEO4J_HOST:-hunjing-neo4j}:7687" ;;
|
|
nebulagraph) WAIT="$WAIT ${NEBULAGRAPH_HOST:-hunjing-nebula-graphd}:${NEBULAGRAPH_PORT:-9669}" ;;
|
|
esac
|
|
fi
|
|
|
|
for target in $WAIT; do
|
|
echo "[entrypoint] 等待依赖就绪: $target"
|
|
/usr/local/bin/wait-for-it.sh "$target" -t "$WAIT_TIMEOUT" \
|
|
|| echo "[entrypoint] 警告: $target 未就绪,继续启动(应用应具备连接重试)"
|
|
done
|
|
|
|
echo "[entrypoint] 启动后端: uv run python -m app.main"
|
|
exec uv run python -m app.main
|