feat(deploy): add docker

This commit is contained in:
2026-02-11 16:30:54 +08:00
parent 03a1e6043d
commit d44a69bdaa
9 changed files with 230 additions and 27 deletions

53
deploy/validate-env.sh Normal file
View File

@@ -0,0 +1,53 @@
#!/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"