39 lines
1.4 KiB
Bash
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."
|
|
} |