Docker自动部署Spring Boot项目的Shell脚本
🤟致敬读者
- 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉
📘博主相关
- 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息
文章目录
- Docker自动部署Spring Boot项目的Shell脚本
- 1. 脚本内容
- 2. 使用说明
- 3.功能说明
- 3.1 自动清理旧环境
- 3.2 自动构建镜像
- 3.3 自动启动新容器
- 3.4 添加额外配置(按需修改)
- 4. 典型工作流程
- 5. 扩展建议
- 5.1 添加版本标签(推荐)
- 5.2 集成到CI/CD
- 5.3 日志管理
📃文章前言
- 🔷文章均为学习工作中整理的笔记。
- 🔶如有错误请指正,共同学习进步。
Docker自动部署Spring Boot项目的Shell脚本
本文以自动部署Spring Boot项目的Shell脚本为例,整合Docker容器管理的常见操作。
读者可根据实际需求调整参数和步骤
1. 脚本内容
脚本内容如下
#!/bin/bash
# 部署配置(根据实际情况修改)
CONTAINER_NAME="springboot_app" # Docker容器名称
IMAGE_NAME="springboot-app:v1.0.0" # Docker镜像名称
# JAR_PATH="./target/*.jar" # 生成的Jar包路径
DOCKERFILE_PATH="." # Dockerfile所在目录
PORT_MAPPING="3080:8080" # 端口映射,将Java服务端口8080映射到本机服务的端口3080
# 1. 停止并删除旧容器
echo "Stopping and removing old container..."
docker stop $CONTAINER_NAME || true
docker rm $CONTAINER_NAME || true
# 2. 删除旧镜像(可选,强制重新构建时使用)
echo "Removing old image..."
docker rmi $IMAGE_NAME || true
# 3. 构建新镜像
echo "Building new image..."
docker build -t $IMAGE_NAME $DOCKERFILE_PATH
# 4. 运行新容器
echo "Starting new container..."
docker run -d \
--name $CONTAINER_NAME \
-p $PORT_MAPPING \
--restart=always \
$IMAGE_NAME
echo "Deployment completed!"
2. 使用说明
- 保存为
deploy.sh
文件 - 添加执行权限,命令如下
chmod +x deploy.sh
- 执行部署,命令如下
./deploy.sh
3.功能说明
3.1 自动清理旧环境
- 强制停止正在运行的旧容器(
|| true
用于忽略未找到容器的错误) - 删除旧容器和旧镜像
3.2 自动构建镜像
- 使用当前目录的Dockerfile(修改
DOCKERFILE_PATH
可指定不同路径) - 镜像名称通过
IMAGE_NAME
参数配置
3.3 自动启动新容器
- 后台运行(
-d
参数) - 端口自动映射(修改
PORT_MAPPING
配置) - 自动重启策略(
--restart=always
)
3.4 添加额外配置(按需修改)
# 环境变量示例
-e "SPRING_PROFILES_ACTIVE=prod"
# 数据卷挂载示例
-v /host/path:/container/path
# 内存限制示例
--memory=512m
4. 典型工作流程
更新代码并打包
mvn clean package
运行部署脚本
./deploy.sh
查看运行状态
docker ps -f "name=$CONTAINER_NAME"
5. 扩展建议
5.1 添加版本标签(推荐)
# 在build命令中添加版本号
VERSION="1.0.0"
docker build -t $IMAGE_NAME:$VERSION .
5.2 集成到CI/CD
- 在Jenkins/GitLab CI中调用此脚本
- 添加健康检查:
curl --retry 10 --retry-delay 5 --retry-connrefused http://localhost:8080/actuator/health
5.3 日志管理
# 添加日志卷
-v ./logs:/app/logs
根据你的实际项目需求调整参数,这个脚本可以显著简化Spring Boot项目的Docker部署流程。
📜文末寄语
- 🟠关注我,获取更多内容。
- 🟡技术动态、实战教程、问题解决方案等内容持续更新中。
- 🟢《全栈知识库》技社区,集结全栈各领域开发者,期待你的加入。
- 🔵加入开发者的《专属社群》,分享交流,技术之路不再孤独,一起变强。
- 🟣点击下方名片获取更多内容🍭🍭🍭👇