返回博客列表

1panel部署脚本

2026-01-29
1 min read
Shell

脚本思路 [x] 进入到不同的项目目录中 - [x] 然后 git pull - [x] java项目,先打包然后构建 docker 镜像 - [x] vue 项目,先打包然后构建 docker 镜像 - [x] docker 关闭运行的容器然后重新构建容器,指定网络和端口映射

脚本思路

  • 进入到不同的项目目录中
  • 然后 git pull
  • java项目,先打包然后构建 docker 镜像
  • vue 项目,先打包然后构建 docker 镜像
  • docker 关闭运行的容器然后重新构建容器,指定网络和端口映射
bash
#!/bin/bash
set -e

GREEN='�33[0;32m'
NC='�33[0m'

BACKEND_DIR="life-blog-boot"
FRONTEND_DIR="life-web"

BACKEND_IMAGE="life-blog-api:1.0"
FRONTEND_IMAGE="life-blog-web:1.1"

BACKEND_CONTAINER="life-blog-api"
FRONTEND_CONTAINER="life-blog-web"

DOCKER_NETWORK="1panel-network"

echo -e "${GREEN}>>> 开始部署流程 <<<${NC}"

# === 后台 ===
echo -e "${GREEN}拉取后台代码...${NC}"
cd "$BACKEND_DIR"
git pull

echo -e "${GREEN}后台项目打包...${NC}"
mvn clean package

echo -e "${GREEN}后台构建 Docker 镜像...${NC}"
sudo docker build -t $BACKEND_IMAGE .

echo -e "${GREEN}停止并删除后台容器(如存在)...${NC}"
sudo docker stop $BACKEND_CONTAINER 2>/dev/null || true
sudo docker rm $BACKEND_CONTAINER 2>/dev/null || true

echo -e "${GREEN}启动后台容器 (8082 -> 14466, 网络 $DOCKER_NETWORK)...${NC}"
sudo docker run -d 
  --name $BACKEND_CONTAINER 
  --network $DOCKER_NETWORK 
  -p 14466:8082 
  $BACKEND_IMAGE

cd ..

# === 前台 ===
echo -e "${GREEN}拉取前台代码...${NC}"
cd "$FRONTEND_DIR"
git pull

echo -e "${GREEN}修复权限并清理旧构建产物...${NC}"
sudo chown -R $(whoami) .
sudo rm -rf dist

echo -e "${GREEN}前台项目构建...${NC}"
npm run build-prod

echo -e "${GREEN}前台构建 Docker 镜像...${NC}"
sudo docker build -t $FRONTEND_IMAGE .

echo -e "${GREEN}停止并删除前台容器(如存在)...${NC}"
sudo docker stop $FRONTEND_CONTAINER 2>/dev/null || true
sudo docker rm $FRONTEND_CONTAINER 2>/dev/null || true

echo -e "${GREEN}启动前台容器 (14467 -> 14467, 网络 $DOCKER_NETWORK)...${NC}"
sudo docker run -d 
  --name $FRONTEND_CONTAINER 
  --network $DOCKER_NETWORK 
  -p 14467:14467 
  $FRONTEND_IMAGE

cd ..

echo -e "${GREEN}? 全部部署完成,容器已加入网络 $DOCKER_NETWORK!${NC}"
返回博客列表
最后更新于 2026-01-29
想法或问题?在 GitHub Issue 下方参与讨论
去评论