init: CasSsoService CAS 5.3 overlay (cas.war via LFS)

This commit is contained in:
chenxing
2026-08-05 09:53:49 +08:00
commit 3bd14554ec
93 changed files with 19827 additions and 0 deletions
+54
View File
@@ -0,0 +1,54 @@
#!/usr/bin/env bash
# 一键部署:上传编排文件 -> SSH 到 ECS 拉取镜像并启动(CAS,依赖公共 mysql8/redis/rabbitmq)
# 用法: ./deploy.sh <version>
# 前置环境变量:
# DEPLOY_HOST (必填) ECS 公网/私网 IP 或域名(SSH 目标,不是 ACR 仓库地址!)
# SSHPASS (必填) ECS 上 $DEPLOY_USER 的 SSH 密码
# ACR_NAMESPACE (必填) 阿里云镜像命名空间,如 damaomi_docker
# ACR_PASSWORD (可选) 若提供则在 ECS 上自动 docker login,避免 ECS 未登录导致 pull 失败
# ACR_USERNAME (可选) 默认 15121037482
# DEPLOY_USER / DEPLOY_PORT / REMOTE_DIR 均有默认值
set -euo pipefail
VERSION="${1:-latest}"
HOST="${DEPLOY_HOST:?请设置 DEPLOY_HOST(ECS 的 IP/域名,不是 ACR 仓库地址)}"
PORT="${DEPLOY_PORT:-22}"
USER="${DEPLOY_USER:-yunhai}"
REMOTE_DIR="${REMOTE_DIR:-/opt/docker/apps/cas-sso}"
ACR_NAMESPACE="${ACR_NAMESPACE:?请设置 ACR_NAMESPACE(如 damaomi_docker)}"
ACR_USERNAME="${ACR_USERNAME:-15121037482}"
ACR_PASSWORD="${ACR_PASSWORD:-}"
# 镜像走公网端点(内网 registry-vpc 在不在 VPC 的 ECS 上连不通)
ACR_REGISTRY="${ACR_REGISTRY:-registry.cn-hangzhou.aliyuncs.com}"
cd "$(dirname "$0")"
echo "== 1/2 上传 compose + run-cas.sh + init.sql + cas.war 到 $HOST:$REMOTE_DIR =="
python3 upload.py "$HOST" "$PORT" "$USER" \
docker-compose.cas.yml "$REMOTE_DIR/docker-compose.cas.yml" \
run-cas.sh "$REMOTE_DIR/run-cas.sh" \
init.sql "$REMOTE_DIR/init.sql"
# 若提供了 ACR 密码,生成自动登录命令(避免 ECS 未登录导致 pull 失败)
LOGIN_CMD=""
if [ -n "$ACR_PASSWORD" ]; then
LOGIN_CMD="docker login $ACR_REGISTRY -u $ACR_USERNAME -p $ACR_PASSWORD"
fi
echo "== 2/2 远端拉取镜像并启动 =="
python3 remote_run.py "$HOST" "$PORT" "$USER" <<EOF
set -e
mkdir -p "$REMOTE_DIR"
cd "$REMOTE_DIR"
cat > .env <<ENV
ACR_REGISTRY=$ACR_REGISTRY
ACR_NAMESPACE=$ACR_NAMESPACE
VERSION=$VERSION
MYSQL_PASSWORD=${MYSQL_PASSWORD:-Cas@123456}
MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-Root@123456}
ENV
/bin/chmod +x "$REMOTE_DIR/run-cas.sh"
$LOGIN_CMD
docker compose -f docker-compose.cas.yml pull cas
docker compose -f docker-compose.cas.yml up -d --force-recreate
docker image prune -f
echo DEPLOY_OK
EOF