#!/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."