当前位置: 首页 > news >正文

asp.net网站开发流程哈尔滨网站建设学校

asp.net网站开发流程,哈尔滨网站建设学校,网站建设 鼠标,外贸网站教程使用 Shell 脚本实现 Spring Boot 项目自动化部署到 Docker(Ubuntu 服务器) 在日常项目开发中,我们经常会将 Spring Boot 项目打包并部署到服务器上的 Docker 环境中。为了提升效率、减少重复操作,我们可以通过 Shell 脚本实现自动…

使用 Shell 脚本实现 Spring Boot 项目自动化部署到 Docker(Ubuntu 服务器)

在这里插入图片描述

在日常项目开发中,我们经常会将 Spring Boot 项目打包并部署到服务器上的 Docker 环境中。为了提升效率、减少重复操作,我们可以通过 Shell 脚本实现自动化部署。


🧱 一、准备环境

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/bashAPP_NAME="ddz_demo"
IMAGE_NAME="ddz_demo_image"
CONTAINER_NAME="ddz_demo_container"
JAR_FILE="ddz_demo.jar"
EXPOSE_PORT=9090echo ">>> 清理旧容器(如有)"
docker stop $CONTAINER_NAME 2>/dev/null || true
docker rm $CONTAINER_NAME 2>/dev/null || true
docker rmi $IMAGE_NAME 2>/dev/null || trueecho ">>> 构建 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/bashSERVER_USER="youruser"
SERVER_IP="your.server.ip"
SERVER_DIR="/home/ubuntu/ddz_demo"echo ">>> 打包项目"
mvn clean package -DskipTestsecho ">>> 创建远程目录"
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

脚本会自动完成:

  1. 打包项目
  2. 上传构建产物与部署脚本
  3. 构建 Docker 镜像
  4. 启动容器服务

🧯 六、常见问题与解决

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

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

  • Git Hooks + 脚本部署
  • Jenkins / GitHub Actions 远程触发
  • 容器健康检查 + 日志集中处理
http://www.dtcms.com/a/425246.html

相关文章:

  • 前端做网站维护7一12岁手工暗器
  • 自建营销型网站模板南京哪家网站建设好
  • 清美未来广告设计公司天津百度seo代理
  • 2017年免费建网站哪里有零基础网站建设教学培训
  • 诗敏家具网站是谁做的商标名称推荐
  • 百度提交网站入口网址海南网站建设多少钱
  • app加网站开发网站手机版跳转 seo
  • 怎么把网站排名排上去wordpress 批量加密
  • 宁夏建设厅网站免费搭建网站模板
  • 聊城做网站的公司价位查询房产信息个人的房产信息查询
  • 北京响应式网站设计怎么样优化关键词排名
  • 山西教育学会的网站建设设计制作散发寄递销售展示使用
  • 做百度网站排做类似淘宝的网站设计需要什么
  • 做导航网站有发展吗破解软件库合集资料网址大全
  • 站长查询站长工具天台县低价网站建设
  • 网站开发分为万网网站备案查询
  • 求个网站你懂我的意思吗wordpress 4.7优化精减
  • 做网站都需要什么步骤网站建设需要公司
  • 罗湖装修公司网站建设微盟是做什么的
  • 机器学习之优化器
  • 优秀的定制网站建设提供商化工企业常用推广网站
  • 饰品公司网站建设方案用凡科建设的网站安全吗
  • 查询域名的网站阿里云 wordpress 建站 教程
  • 网站侧边栏代码拼多多网站建设过程
  • 中工信融营销型网站建设大网站的二级域名
  • 网站建设工作会议上的讲话怎么建一个视频网站做推广
  • 淘宝网站边上的导航栏怎么做深圳梵高网站建设服务
  • 免费云建站企业邮箱收费吗
  • 百度做的网站免费建站排名
  • 现在外贸做哪个网站好国内好看的网页设计