项目概况

1panel部署脚本

2026-01-291 min read后端技术
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}"