lawless/docker/nacos/import-configs.sh

51 行
1.7 KiB
Bash

#!/bin/sh
# 将 configs/nacos/*.yaml 导入 Nacosstandalone 模式)
# 环境变量:
# 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."