erp-java/services/warehouse-service/deploy.sh

183 lines
4.3 KiB
Bash
Executable File
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 -e
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 日志函数
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 检查Docker是否安装
check_docker() {
if ! command -v docker &> /dev/null; then
log_error "Docker未安装请先安装Docker"
exit 1
fi
if ! command -v docker-compose &> /dev/null; then
log_error "docker-compose未安装请先安装docker-compose"
exit 1
fi
log_info "Docker环境检查通过"
}
# 检查Nacos网络
check_network() {
if ! docker network ls | grep -q "erp-network"; then
log_info "创建erp-network网络..."
docker network create erp-network
else
log_info "erp-network网络已存在"
fi
}
# 构建Docker镜像
build_image() {
log_info "开始构建Docker镜像..."
docker build -t warehouse-service:1.0.0 .
log_info "镜像构建完成: warehouse-service:1.0.0"
}
# 停止并删除旧容器
cleanup_old() {
if docker ps -a | grep -q warehouse-service; then
log_warn "发现旧容器,正在停止并删除..."
docker stop warehouse-service 2>/dev/null || true
docker rm warehouse-service 2>/dev/null || true
log_info "旧容器已清理"
fi
}
# 启动服务
start_service() {
log_info "启动仓库服务..."
docker-compose up -d
log_info "服务启动成功"
}
# 等待服务就绪
wait_for_ready() {
log_info "等待服务就绪..."
local max_attempts=30
local attempt=1
while [ $attempt -le $max_attempts ]; do
if curl -sf http://localhost:8084/actuator/health > /dev/null 2>&1; then
log_info "服务已就绪!"
return 0
fi
echo -n "."
sleep 2
attempt=$((attempt + 1))
done
echo ""
log_error "服务启动超时"
return 1
}
# 查看日志
show_logs() {
log_info "最近50行日志:"
docker logs --tail 50 warehouse-service
}
# 主函数
main() {
log_info "========================================"
log_info " 仓库服务部署脚本"
log_info "========================================"
check_docker
check_network
cleanup_old
build_image
start_service
if wait_for_ready; then
log_info "========================================"
log_info " 部署成功!"
log_info " 服务地址: http://localhost:8084"
log_info " 健康检查: http://localhost:8084/actuator/health"
log_info "========================================"
echo ""
read -p "是否查看日志? (y/n) " -n 1 -r
echo ""
if [[ $REPLY =~ ^[Yy]$ ]]; then
show_logs
fi
else
log_error "部署失败,请检查日志"
show_logs
exit 1
fi
}
# 根据参数执行不同操作
case "${1:-deploy}" in
deploy)
main
;;
rebuild)
check_docker
check_network
cleanup_old
build_image
start_service
wait_for_ready
;;
start)
docker-compose start
;;
stop)
docker-compose stop
;;
restart)
docker-compose restart
;;
logs)
docker logs -f warehouse-service
;;
status)
docker ps | grep warehouse-service
;;
clean)
log_warn "清理所有相关资源..."
docker stop warehouse-service 2>/dev/null || true
docker rm warehouse-service 2>/dev/null || true
docker rmi warehouse-service:1.0.0 2>/dev/null || true
log_info "清理完成"
;;
*)
echo "用法: $0 {deploy|rebuild|start|stop|restart|logs|status|clean}"
echo ""
echo " deploy - 完整部署 (默认)"
echo " rebuild - 重新构建并部署"
echo " start - 启动服务"
echo " stop - 停止服务"
echo " restart - 重启服务"
echo " logs - 查看日志"
echo " status - 查看状态"
echo " clean - 清理资源"
exit 1
;;
esac