You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
2.3 KiB
57 lines
2.3 KiB
|
4 weeks ago
|
#!/usr/bin/env bash
|
||
|
|
# ============================================================
|
||
|
|
# crm-app 更新重启脚本(测试环境自包含 compose,仅重启 crm-app)
|
||
|
|
#
|
||
|
|
# 前提:服务器上只有 jar(无源码)。crm-app 用含 LibreOffice 的基础镜像
|
||
|
|
# crm-runtime:latest + 挂载 crm-app-1.0.0-SNAPSHOT.jar 运行。mysql/redis/minio/nginx 不动。
|
||
|
|
#
|
||
|
|
# 用法:把本地打好的 crm-app-1.0.0-SNAPSHOT.jar 上传到项目根目录后,运行:
|
||
|
|
# ./deploy/restart.sh # 从项目根目录调用
|
||
|
|
# 或 cd deploy && ./restart.sh
|
||
|
|
# ============================================================
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
# 定位项目根目录(本脚本在 deploy/ 下,根目录是其上一级)
|
||
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||
|
|
cd "$ROOT"
|
||
|
|
|
||
|
|
JAR="crm-app-1.0.0-SNAPSHOT.jar"
|
||
|
|
COMPOSE_FILE="docker-compose.yml"
|
||
|
|
BASE_IMAGE="crm-runtime:latest"
|
||
|
|
BASE_DOCKERFILE="deploy/Dockerfile.base"
|
||
|
|
SERVICE="crm-app"
|
||
|
|
|
||
|
|
# docker compose v2 优先,回退 v1
|
||
|
|
if docker compose version >/dev/null 2>&1; then
|
||
|
|
DC="docker compose"
|
||
|
|
elif command -v docker-compose >/dev/null 2>&1; then
|
||
|
|
DC="docker-compose"
|
||
|
|
else
|
||
|
|
echo "[✗] 未找到 docker compose / docker-compose" >&2; exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "==> 前置检查(项目根:$ROOT)"
|
||
|
|
[ -f "$JAR" ] || { echo "[✗] 缺少 $JAR(请把本地打好的 jar 上传到项目根目录)" >&2; exit 1; }
|
||
|
|
[ -f "$COMPOSE_FILE" ] || { echo "[✗] 缺少 $COMPOSE_FILE" >&2; exit 1; }
|
||
|
|
echo " jar 大小:$(du -h "$JAR" | cut -f1)"
|
||
|
|
|
||
|
|
# 基础镜像不存在则 build(一次性;LibreOffice 层较久)
|
||
|
|
if ! docker image inspect "$BASE_IMAGE" >/dev/null 2>&1; then
|
||
|
|
echo "==> 基础镜像 $BASE_IMAGE 不存在,首次构建(含 LibreOffice,耗时较久)..."
|
||
|
|
docker build -f "$BASE_DOCKERFILE" -t "$BASE_IMAGE" .
|
||
|
|
else
|
||
|
|
echo "==> 基础镜像已存在,跳过构建"
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "==> 仅重启 $SERVICE(加载新 jar,其余服务不动)"
|
||
|
|
# --no-deps 不牵动 mysql/redis/minio;--force-recreate 确保重挂新 jar
|
||
|
|
$DC -f "$COMPOSE_FILE" up -d --no-deps --force-recreate "$SERVICE"
|
||
|
|
|
||
|
|
echo "==> 最近日志(10s 内启动情况)"
|
||
|
|
sleep 3
|
||
|
|
$DC -f "$COMPOSE_FILE" logs --tail=30 "$SERVICE"
|
||
|
|
|
||
|
|
echo
|
||
|
|
echo "[i] crm-app 不直接暴露端口,经 nginx:80 访问。核对状态:"
|
||
|
|
docker ps --filter "name=$SERVICE" --format ' {{.Names}} {{.Status}}'
|