当前位置: 代码网 > it编程>编程语言>Java > 使用Shell脚本实现SpringBoot项目自动化部署到Docker的操作指南

使用Shell脚本实现SpringBoot项目自动化部署到Docker的操作指南

2025年05月30日 Java 我要评论
一、准备环境1. 本地和服务器要求本地安装了 maven 和 jdk服务器操作系统为 ubuntu 22.04 lts服务器已安装 docker,并已配置当前用户对 docker 的权限(加入dock

一、准备环境

1. 本地和服务器要求

  • 本地安装了 maven 和 jdk
  • 服务器操作系统为 ubuntu 22.04 lts
  • 服务器已安装 docker,并已配置当前用户对 docker 的权限(加入 docker 用户组)

2. 本地项目结构示例

project-root/
├── src/
├── target/
│   └── yourapp.jar
├── dockerfile
└── deploy/
│   └── deploy.sh
└── deploy-to-server.sh

二、编写部署脚本

在 project-root/deploy 目录中创建 deploy.sh 脚本(用于服务器端自动执行):

deploy/deploy.sh 内容:

#!/bin/bash

app_name="ddz_demo"
image_name="ddz_demo_image"
container_name="ddz_demo_container"
jar_file="ddz_demo.jar"
expose_port=9090

echo ">>> 清理旧容器(如有)"
docker stop $container_name 2>/dev/null || true
docker rm $container_name 2>/dev/null || true
docker rmi $image_name 2>/dev/null || true

echo ">>> 构建 docker 镜像"
docker build -t $image_name .

echo ">>> 启动新容器"
docker run -d --name $container_name -p $expose_port:$expose_port $image_name

注意:确保 dockerfile 中的 expose 与实际 java 服务端口一致。

三、编写自动上传与执行脚本

在本地项目根目录添加一个部署脚本,如 deploy-to-server.sh

deploy-to-server.sh 内容:

#!/bin/bash

server_user="youruser"
server_ip="your.server.ip"
server_dir="/home/ubuntu/ddz_demo"

echo ">>> 打包项目"
mvn clean package -dskiptests

echo ">>> 创建远程目录"
ssh $server_user@$server_ip "mkdir -p $server_dir"

echo ">>> 上传文件"
scp target/ddz_demo.jar dockerfile deploy/deploy.sh $server_user@$server_ip:$server_dir/

echo ">>> 执行部署脚本"
ssh $server_user@$server_ip "chmod +x $server_dir/deploy.sh && cd $server_dir && ./deploy.sh"

四、配置 ssh 免密登录(自动化关键)

如果不想每次上传/执行都输入密码,请配置 ssh 免密登录:

1. 本地生成密钥(如未生成)

ssh-keygen -t rsa -b 4096

2. 将公钥添加到服务器

ssh-copy-id ubuntu@[your.server.ip]

或手动上传:

cat ~/.ssh/id_rsa.pub | ssh ubuntu@[your.server.ip] "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

3. 验证

ssh ubuntu@[your.server.ip]

应无需输入密码即可登录。

五、部署过程演示

只需一条命令即可:

bash deploy-to-server.sh

脚本会自动完成:

  • 打包项目
  • 上传构建产物与部署脚本
  • 构建 docker 镜像
  • 启动容器服务

六、常见问题与解决

问题解决方法
permission denied 上传失败确保目标目录属于当前用户或改为 /home/ubuntu
docker 权限错误将用户加入 docker 组:sudo usermod -ag docker $user 并重启
容器端口配置不一致确保 dockerfile 中 expose 和 java 服务端口一致
脚本无法执行加权限:chmod +x deploy.sh

如果希望进一步提升部署体验,还可以引入:

  • git hooks + 脚本部署
  • jenkins / github actions 远程触发
  • 容器健康检查 + 日志集中处理

以上就是使用shell脚本实现springboot项目自动化部署到docker的操作指南的详细内容,更多关于shell实现springboot自动化部署的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com