#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "${SCRIPT_DIR}" # 路径修正:validate-env.sh 在 deploy/ 目录下,而 .env 在项目根目录 # 项目根目录 = deploy/../ = ../ ENV_FILE="../.env" if [ ! -f "$ENV_FILE" ]; then echo "Error: .env file not found at $(readlink -f "$ENV_FILE")" echo "Please copy .env.example to .env and configure it." exit 1 fi echo "Validating iam-front .env configuration..." # Helper to read env var get_env() { local key=$1 local val val=$(grep "^${key}=" "$ENV_FILE" | cut -d= -f2- | tr -d '"' | tr -d "'") echo "$val" } # 1. 检查必要变量 REQUIRED_VARS=( "IAM_SERVICE_BASE_URL" "CAPTCHA_SECRET" ) for var in "${REQUIRED_VARS[@]}"; do val=$(get_env "$var") if [ -z "$val" ]; then echo "Error: $var is required in .env" exit 1 fi done # 2. 检查 Docker 模式下 localhost DEPLOY_TARGET="${DEPLOY_TARGET:-}" if [ "$DEPLOY_TARGET" == "docker" ]; then IAM_URL=$(get_env "IAM_SERVICE_BASE_URL") if [[ "$IAM_URL" == *"localhost"* ]] || [[ "$IAM_URL" == *"127.0.0.1"* ]]; then echo "Error: IAM_SERVICE_BASE_URL contains localhost/127.0.0.1" echo "In Docker, this refers to the container itself." echo "Please use the host IP or docker-compose service name (if in same network)." exit 1 fi fi echo "iam-front .env validation OK"