95 lines
2.1 KiB
Bash
95 lines
2.1 KiB
Bash
#!/bin/bash
|
|
|
|
# Data Import Export Service 部署脚本
|
|
# 使用方式: ./deploy.sh [dev|test|prod]
|
|
|
|
set -e
|
|
|
|
PROFILE=${1:-dev}
|
|
IMAGE_NAME="erp-data-import-export-service"
|
|
IMAGE_TAG="latest"
|
|
CONTAINER_NAME="erp-data-import-export-service"
|
|
|
|
echo "====== Data Import Export Service 部署脚本 ======"
|
|
echo "环境: $PROFILE"
|
|
echo "镜像: $IMAGE_NAME:$IMAGE_TAG"
|
|
|
|
# 构建镜像
|
|
build_image() {
|
|
echo "[1/4] 构建Docker镜像..."
|
|
docker build -t ${IMAGE_NAME}:${IMAGE_TAG} .
|
|
echo "镜像构建完成"
|
|
}
|
|
|
|
# 停止并删除旧容器
|
|
deploy_container() {
|
|
echo "[2/4] 部署容器..."
|
|
|
|
# 停止旧容器
|
|
if docker ps -a | grep -q ${CONTAINER_NAME}; then
|
|
echo "停止旧容器..."
|
|
docker stop ${CONTAINER_NAME} || true
|
|
docker rm ${CONTAINER_NAME} || true
|
|
fi
|
|
|
|
# 启动新容器
|
|
echo "启动新容器..."
|
|
docker run -d \
|
|
--name ${CONTAINER_NAME} \
|
|
-p 8088:8088 \
|
|
-e SPRING_PROFILES_ACTIVE=${PROFILE} \
|
|
-v /tmp/import-export:/tmp/import-export \
|
|
--restart unless-stopped \
|
|
${IMAGE_NAME}:${IMAGE_TAG}
|
|
|
|
echo "容器启动完成"
|
|
}
|
|
|
|
# 检查健康状态
|
|
check_health() {
|
|
echo "[3/4] 检查服务健康状态..."
|
|
|
|
MAX_RETRIES=30
|
|
RETRY_COUNT=0
|
|
|
|
while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do
|
|
if curl -f http://localhost:8088/data-import/api/health > /dev/null 2>&1; then
|
|
echo "服务健康检查通过"
|
|
return 0
|
|
fi
|
|
|
|
RETRY_COUNT=$((RETRY_COUNT + 1))
|
|
echo "等待服务启动... ($RETRY_COUNT/$MAX_RETRIES)"
|
|
sleep 2
|
|
done
|
|
|
|
echo "服务健康检查失败"
|
|
return 1
|
|
}
|
|
|
|
# 查看日志
|
|
show_logs() {
|
|
echo "[4/4] 服务日志..."
|
|
docker logs --tail=50 ${CONTAINER_NAME}
|
|
}
|
|
|
|
# 主流程
|
|
main() {
|
|
case $PROFILE in
|
|
dev|test|prod)
|
|
build_image
|
|
deploy_container
|
|
check_health
|
|
show_logs
|
|
echo "====== 部署完成 ======"
|
|
;;
|
|
*)
|
|
echo "未知环境: $PROFILE"
|
|
echo "支持的环境: dev, test, prod"
|
|
exit 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
main
|