-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.sh
100 lines (79 loc) · 2.22 KB
/
build.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#!/bin/bash
# 设置变量
DOCKER_DIR="./docker"
JAR_NAME="springboot-0.0.1-SNAPSHOT.jar"
DOCKER_JAR_NAME="app.jar"
DOCKER_IMAGE_NAME="kkk2099/kkk:service-a-1.0"
# 使用Maven打包,并跳过测试
mvn clean package -Dmaven.test.skip=true
# 检查Maven是否成功构建
if [ $? -ne 0 ]; then
echo "Maven构建失败,脚本终止。"
exit 1
fi
# 复制打包的JAR文件到Docker目录,并重命名为app.jar
cp "target/$JAR_NAME" "$DOCKER_DIR/$DOCKER_JAR_NAME"
# 检查复制是否成功
if [ $? -ne 0 ]; then
echo "复制JAR文件失败,脚本终止。"
exit 1
fi
# 进入Docker目录
cd "$DOCKER_DIR"
# 找到并停止和删除所有基于指定镜像的容器
CONTAINER_IDS=$(docker ps -a -q --filter ancestor="$DOCKER_IMAGE_NAME")
if [ -n "$CONTAINER_IDS" ]; then
echo "找到容器,ID: $CONTAINER_IDS。"
# 停止所有找到的容器
echo "正在停止容器..."
docker stop $CONTAINER_IDS
# 检查停止容器是否成功
if [ $? -ne 0 ]; then
echo "停止容器失败,脚本终止。"
exit 1
fi
# 删除所有找到的容器
echo "正在删除容器..."
docker rm $CONTAINER_IDS
# 检查删除容器是否成功
if [ $? -ne 0 ]; then
echo "删除容器失败,脚本终止。"
exit 1
fi
else
echo "未找到相关的容器。"
fi
# 找到Docker镜像的imageId
IMAGE_ID=$(docker images -q "$DOCKER_IMAGE_NAME")
# 删除旧的Docker镜像
if [ -n "$IMAGE_ID" ]; then
docker rmi "$IMAGE_ID"
# 检查镜像删除是否成功
if [ $? -ne 0 ]; then
echo "删除旧的Docker镜像失败,脚本终止。"
exit 1
fi
else
echo "未找到旧的Docker镜像。"
fi
# 构建新的Docker镜像
docker build -t "$DOCKER_IMAGE_NAME" .
# 检查Docker构建是否成功
if [ $? -ne 0 ]; then
echo "Docker镜像构建失败。"
exit 1
fi
echo "Docker镜像构建成功。"
# 询问是否要推送到Docker仓库
read -p "是否要推送镜像到Docker仓库?(y/n): " should_push
if [ "$should_push" = "y" ] || [ "$should_push" = "Y" ]; then
echo "正在推送镜像到Docker仓库..."
docker push "$DOCKER_IMAGE_NAME"
if [ $? -ne 0 ]; then
echo "推送镜像失败。"
exit 1
fi
echo "镜像推送成功。"
else
echo "跳过推送镜像步骤。"
fi