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."
|