88 lines
2.8 KiB
Bash
88 lines
2.8 KiB
Bash
#!/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 "=========================================="
|