GuDingZiChan/deploy.sh
2026-03-10 17:01:56 +08:00

88 lines
2.8 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 固定资产管理系统部署脚本
set -euo pipefail
PROJECT_DIR="/opt/equipment-management"
COMPOSE_FILE="$PROJECT_DIR/docker-compose.yml"
PROJECT_NAME="equipment-management"
BACKUP_SCRIPT="$PROJECT_DIR/scripts/backup-equipment.sh"
SKIP_BACKUP="${SKIP_BACKUP:-0}"
EQUIPMENT_CONTAINERS=("equipment-frontend" "equipment-backend" "equipment-mysql")
LEGACY_CONTAINERS=("shebeiguanli-frontend" "shebeiguanli-backend" "shebeiguanli-mysql")
if docker compose version >/dev/null 2>&1; then
COMPOSE_CMD=(docker compose -p "$PROJECT_NAME" -f "$COMPOSE_FILE")
elif command -v docker-compose >/dev/null 2>&1; then
COMPOSE_CMD=(docker-compose -p "$PROJECT_NAME" -f "$COMPOSE_FILE")
else
echo "未找到 docker compose / docker-compose,无法部署。"
exit 1
fi
echo "=========================================="
echo " 固定资产管理系统 - 安全部署脚本"
echo "=========================================="
echo "项目目录: $PROJECT_DIR"
echo "Compose 文件: $COMPOSE_FILE"
echo "Compose 项目名: $PROJECT_NAME"
echo "备份脚本: $BACKUP_SCRIPT"
echo ""
if [ ! -f "$COMPOSE_FILE" ]; then
echo "未找到 $COMPOSE_FILE"
exit 1
fi
cd "$PROJECT_DIR"
if [ "$SKIP_BACKUP" = "1" ]; then
echo ">>> 已设置 SKIP_BACKUP=1,跳过备份"
else
if [ ! -x "$BACKUP_SCRIPT" ]; then
echo "备份脚本不存在或不可执行: $BACKUP_SCRIPT"
exit 1
fi
echo ">>> 先执行固定资产系统备份..."
"$BACKUP_SCRIPT"
fi
echo ">>> 部署前检查旧系统容器状态..."
for container in "${LEGACY_CONTAINERS[@]}"; do
status=$(docker inspect -f '{{.State.Status}}' "$container" 2>/dev/null || echo "missing")
echo " $container => $status"
done
echo ">>> 仅更新固定资产系统容器..."
"${COMPOSE_CMD[@]}" down
"${COMPOSE_CMD[@]}" build
"${COMPOSE_CMD[@]}" up -d
echo ">>> 等待服务启动..."
sleep 10
echo ">>> 固定资产系统容器状态..."
for container in "${EQUIPMENT_CONTAINERS[@]}"; do
status=$(docker inspect -f '{{.State.Status}}' "$container" 2>/dev/null || echo "missing")
echo " $container => $status"
done
echo ">>> 再次确认摄影设备借还系统未受影响..."
for container in "${LEGACY_CONTAINERS[@]}"; do
status=$(docker inspect -f '{{.State.Status}}' "$container" 2>/dev/null || echo "missing")
echo " $container => $status"
done
echo ">>> 检查固定资产系统后端健康状态..."
curl -fsS http://localhost:3000/api/health || echo "后端服务启动中..."
echo ""
echo "=========================================="
echo " 部署完成"
echo " 固定资产前端: http://1.13.22.133"
echo " 固定资产后端: http://1.13.22.133:3000/api"
echo " 摄影设备前端: http://1.13.22.133:8081"
echo " 摄影设备后端: http://1.13.22.133:3001"
echo "=========================================="