脚本思路
- 进入到不同的项目目录中
- 然后 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}"
想法或问题?在 GitHub Issue 下方参与讨论
去评论