#!/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 "=========================================="