51 行
1.7 KiB
Bash
51 行
1.7 KiB
Bash
|
|
#!/bin/sh
|
|||
|
|
# 将 configs/nacos/*.yaml 导入 Nacos(standalone 模式)
|
|||
|
|
# 环境变量:
|
|||
|
|
# NACOS_SERVER 默认 honghuang-nacos:8848
|
|||
|
|
# NACOS_NAMESPACE 默认 honghuang(会作为 namespace id 创建)
|
|||
|
|
|
|||
|
|
set -e
|
|||
|
|
|
|||
|
|
SERVER="${NACOS_SERVER:-honghuang-nacos:8848}"
|
|||
|
|
NAMESPACE="${NACOS_NAMESPACE:-honghuang}"
|
|||
|
|
BASE_URL="http://${SERVER}/nacos/v1/cs/configs"
|
|||
|
|
NS_URL="http://${SERVER}/nacos/v1/console/namespaces"
|
|||
|
|
|
|||
|
|
echo "[nacos-init] Waiting for Nacos at ${SERVER}..."
|
|||
|
|
for i in $(seq 1 60); do
|
|||
|
|
if curl -fsS "http://${SERVER}/nacos/v1/console/health/readiness" >/dev/null 2>&1; then
|
|||
|
|
echo "[nacos-init] Nacos is ready."
|
|||
|
|
break
|
|||
|
|
fi
|
|||
|
|
if [ "$i" -eq 60 ]; then
|
|||
|
|
echo "[nacos-init] ERROR: Nacos did not become ready in time." >&2
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
sleep 2
|
|||
|
|
done
|
|||
|
|
|
|||
|
|
# 创建 namespace(已存在时忽略错误)
|
|||
|
|
echo "[nacos-init] Ensuring namespace '${NAMESPACE}' exists..."
|
|||
|
|
curl -fsS -X POST "${NS_URL}?namespaceName=${NAMESPACE}&customNamespaceId=${NAMESPACE}" >/dev/null 2>&1 || true
|
|||
|
|
|
|||
|
|
# 构造 tenant 参数:public/空表示默认空间,否则使用指定 namespace id
|
|||
|
|
TENANT_ARG=""
|
|||
|
|
if [ -n "${NAMESPACE}" ] && [ "${NAMESPACE}" != "public" ]; then
|
|||
|
|
TENANT_ARG="--data-urlencode tenant=${NAMESPACE}"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo "[nacos-init] Importing configs into namespace '${NAMESPACE}'..."
|
|||
|
|
for f in /configs/*.yaml; do
|
|||
|
|
[ -e "$f" ] || continue
|
|||
|
|
DATA_ID="$(basename "$f")"
|
|||
|
|
echo "[nacos-init] Publishing ${DATA_ID} ..."
|
|||
|
|
curl -fsS -X POST "${BASE_URL}" \
|
|||
|
|
--data-urlencode "dataId=${DATA_ID}" \
|
|||
|
|
--data-urlencode "group=DEFAULT_GROUP" \
|
|||
|
|
${TENANT_ARG} \
|
|||
|
|
--data-urlencode "content@${f}" >/dev/null
|
|||
|
|
echo "[nacos-init] ${DATA_ID} imported."
|
|||
|
|
done
|
|||
|
|
|
|||
|
|
echo "[nacos-init] All Nacos configs imported successfully."
|