1panel部署脚本
Shell
脚本思路
- 进入到不同的项目目录中
- 然后 git pull
- java项目,先打包然后构建 docker 镜像
- vue 项目,先打包然后构建 docker 镜像
- docker 关闭运行的容器然后重新构建容器,指定网络和端口映射
bash
1#!/bin/bash
2set -e
3
4GREEN='�33[0;32m'
5NC='�33[0m'
6
7BACKEND_DIR="life-blog-boot"
8FRONTEND_DIR="life-web"
9
10BACKEND_IMAGE="life-blog-api:1.0"
11FRONTEND_IMAGE="life-blog-web:1.1"
12
13BACKEND_CONTAINER="life-blog-api"
14FRONTEND_CONTAINER="life-blog-web"
15
16DOCKER_NETWORK="1panel-network"
17
18echo -e "${GREEN}>>> 开始部署流程 <<<${NC}"
19
20# === 后台 ===
21echo -e "${GREEN}拉取后台代码...${NC}"
22cd "$BACKEND_DIR"
23git pull
24
25echo -e "${GREEN}后台项目打包...${NC}"
26mvn clean package
27
28echo -e "${GREEN}后台构建 Docker 镜像...${NC}"
29sudo docker build -t $BACKEND_IMAGE .
30
31echo -e "${GREEN}停止并删除后台容器(如存在)...${NC}"
32sudo docker stop $BACKEND_CONTAINER 2>/dev/null || true
33sudo docker rm $BACKEND_CONTAINER 2>/dev/null || true
34
35echo -e "${GREEN}启动后台容器 (8082 -> 14466, 网络 $DOCKER_NETWORK)...${NC}"
36sudo docker run -d
37 --name $BACKEND_CONTAINER
38 --network $DOCKER_NETWORK
39 -p 14466:8082
40 $BACKEND_IMAGE
41
42cd ..
43
44# === 前台 ===
45echo -e "${GREEN}拉取前台代码...${NC}"
46cd "$FRONTEND_DIR"
47git pull
48
49echo -e "${GREEN}修复权限并清理旧构建产物...${NC}"
50sudo chown -R $(whoami) .
51sudo rm -rf dist
52
53echo -e "${GREEN}前台项目构建...${NC}"
54npm run build-prod
55
56echo -e "${GREEN}前台构建 Docker 镜像...${NC}"
57sudo docker build -t $FRONTEND_IMAGE .
58
59echo -e "${GREEN}停止并删除前台容器(如存在)...${NC}"
60sudo docker stop $FRONTEND_CONTAINER 2>/dev/null || true
61sudo docker rm $FRONTEND_CONTAINER 2>/dev/null || true
62
63echo -e "${GREEN}启动前台容器 (14467 -> 14467, 网络 $DOCKER_NETWORK)...${NC}"
64sudo docker run -d
65 --name $FRONTEND_CONTAINER
66 --network $DOCKER_NETWORK
67 -p 14467:14467
68 $FRONTEND_IMAGE
69
70cd ..
71
72echo -e "${GREEN}? 全部部署完成,容器已加入网络 $DOCKER_NETWORK!${NC}"