NewGaoKaoApi/New_College.Api/start.sh

76 lines
2.5 KiB
Bash

#!/bin/bash
# 清理闲置资源
echo "Cleaning up unused Docker resources..."
yes | docker system prune -f
# 定义 Docker 镜像名称、Tag 前缀和当前时间戳
REPO_NAME="newgaokao"
TAG_PREFIX="build_"
TIMESTAMP=$(date +%Y%m%d%H%M%S)
TAG="${REPO_NAME}:${TAG_PREFIX}${TIMESTAMP}"
CONTAINER_NAME="${REPO_NAME}_container_${TIMESTAMP}"
# 钉钉 Webhook URL
DINGDING_WEBHOOK="https://oapi.dingtalk.com/robot/send?access_token=fca104958fea6273c9c7ef3f08b3d552645c214f929066785e8caf6e1885a5a6"
# 输入 Git 用户名和密码(如果没有配置 Git 凭据管理器的话)
GIT_USERNAME="yly"
GIT_PERSONAL_ACCESS_TOKEN="53789ac2bb0ef13556e0551024f92f2872ff0918"
#清理所有docker资源
#docker system prune -a --volumes
# 构建 Docker 镜像并传递 Git 凭据
docker build --no-cache --build-arg GIT_USERNAME="${GIT_USERNAME}" --build-arg GIT_PERSONAL_ACCESS_TOKEN="${GIT_PERSONAL_ACCESS_TOKEN}" -t "${TAG}" . && {
# 构建成功后停止并删除之前的容器
echo "Stopping and removing old containers..."
docker ps -aqf "name=${REPO_NAME}_container_*" | xargs docker stop
docker ps -aqf "name=${REPO_NAME}_container_*" | xargs docker rm
# 删除旧的镜像(保留最新的)
echo "Removing old images..."
docker images --format "{{.Repository}}:{{.Tag}}" | grep "${REPO_NAME}:${TAG_PREFIX}" | grep -v "${TAG}" | xargs docker rmi
# 显示成功构建的新镜像信息
echo "New image built successfully: ${TAG}"
docker images | grep "${TAG}"
# 启动新的容器
echo "Starting new container ${CONTAINER_NAME}..."
docker run \
-p 8081:8081 \
-v /var/www/wwwroot:/app/wwwroot \
--restart unless-stopped \
--name "${CONTAINER_NAME}" \
-d "${TAG}"
# 显示成功启动的容器信息
echo "Container started successfully: ${CONTAINER_NAME}"
docker ps | grep "${CONTAINER_NAME}"
# 钉钉消息推送
curl "$DINGDING_WEBHOOK" \
-H 'Content-Type: application/json' \
-d '{
"msgtype": "text",
"text": {
"content": "NewGaokao服务Docker 构建完成,镜像: '"${TAG}"' 容器: '"${CONTAINER_NAME}"' 已成功启动。"
}
}'
echo "Notification sent to DingDing."
} || {
# 构建失败时显示错误信息
echo "Failed to build the Docker image."
# 钉钉消息推送
curl "$DINGDING_WEBHOOK" \
-H 'Content-Type: application/json' \
-d '{
"msgtype": "text",
"text": {
"content": ""NewGaokao服务 Docker 构建失败,请检查错误日志。"
}
}'
echo "Error notification sent to DingDing."
}