NewGaoKaoApi/New_College.Api/start.sh

39 lines
1.4 KiB
Bash

#!/bin/bash
# 设置Docker镜像的仓库名和标签前缀
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}"
# 尝试构建新的Docker镜像
docker build -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 8082:8082 \
--restart unless-stopped \
--name "${CONTAINER_NAME}" \
-d "${TAG}"
# 显示正在运行的容器信息
echo "Container started successfully: ${CONTAINER_NAME}"
docker ps | grep "${CONTAINER_NAME}"
} || {
# 如果构建失败,则打印错误信息
echo "Failed to build the Docker image."
}