Jenkins + Docker 一键自动化部署 SpringBoot 应用最精简流程

本文章实现最简单全面的 Jenkins + Docker + Spring Boot 一键自动部署项目。步骤齐全,少走坑路。

  • 环境:CentOS7 + Git (Gitee)

  • 实现步骤:在 Docker 安装 Jenkins,配置 Jenkins 基本信息,利用 Dockerfile 和 Shell 脚本实现项目自动拉取打包并运行。

1安装 Docker

安装社区版本 Docker CE

  1. 确保 yum 包更新到最新
yum update
  1. 卸载旧版本(如果安装过旧版本的话)
yum remove docker  docker-common docker-selinux docker-engine
  1. 安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 设置 yum 源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  1. 安装 Docker
yum install docker-ce  #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
yum install <自己的版本>  # 例如:sudo yum install docker-ce-17.12.0.ce
  1. 启动并设置开机启动
systemctl start docker
systemctl enable docker
  1. 验证安装是否成功
docker version

2安装 Jenkins

Jenkins 中文官网:https://www.jenkins.io/zh/

1. 安装 Jenkins

Docker 安装一切都是那么简单。注意检查 8080 是否已经占用,如果占用请修改端口。

docker run --name jenkins -u root --rm -d -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean

如果没改端口号的话,安装完成后访问地址:

http://{部署Jenkins所在服务IP}:8080

此处会有几分钟的等待时间。

2. 初始化 Jenkins

详情见官网教程:https://www.jenkins.io/zh/doc

2.1 解锁 Jenkins
# 进入Jenkins容器
docker exec -it {Jenkins容器名} bash  
# 例如 docker exec -it jenkins bash

# 查看密码
cat /var/lib/jenkins/secrets/initialAdminPassword

# 复制密码到输入框里面
2.2 安装插件

选择第一项:安装推荐的插件。

2.3 创建管理员用户

此账户信息一定要记住哦。

3系统配置

1. 安装需要插件

进入【首页】–【系统管理】–【插件管理】–【可选插件】。搜索以下需要安装的插件,点击安装即可。

安装 Maven Integration

安装 Publish Over SSH(如果不需要远程推送,不用安装)

如果使用 Gitee 码云,安装插件Gitee(自带 Git 不用单独安装)

2. 配置 Maven

进入【首页】–【系统管理】–【全局配置】,拉到页面最下方 maven–maven 安装。

4创建任务

1. 新建任务

点击【新建任务】,输入任务名称,点击构建一个自由风格的软件项目。

2. 源码管理

点击【源码管理】–【Git】,输入仓库地址,添加凭证,选择好凭证即可。

3. 构建触发器

点击【构建触发器】–【构建】–【增加构建步骤】–【调用顶层 Maven 目标】–【「填写配置」】–【保存】。

此处命令只是 install,看是否能生成 jar 包。

clean install -Dmaven.test.skip=true

4. 保存

点击【保存】按钮即可。

5测试

该功能测试是否能正常打包。

1. 构建

点击构建按钮。

2. 查看日志

点击正在构建的任务,或者点击任务名称进入详情页面,查看控制台输出。看是否能成功打成 jar 包。

该处日志第一次可能下载依赖 jar 包失败,再次点击构建即可成功。

3. 查看项目位置

cd /var/jenkins_home/workspace
ll # 即可查看是否存在

6运行项目

因为项目和 Jenkins 在同一台服务器,所以我们用 Shell 脚本运行项目,原理既是通过 Dockerfile 打包镜像,然后 docker 运行即可。

1. Dockerfile

在 Spring Boot 项目根目录新建一个名为 Dockerfile 的文件,注意没有后缀名。

其内容如下:(大致就是使用 JDK 8,把 jar 包添加到 docker 然后运行 prd 配置文件。详细可以查看其他教程)

FROM jdk:8
VOLUME /tmp
ADD target/zx-order-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8888ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar","--spring.profiles.active=prd"]

2. 修改 Jenkins 任务配置

配置如下:

"-t" 指定新镜像名,"." 表示 Dockfile 在当前路径。

cd /var/jenkins_home/workspace/zx-order-api
docker stop zx-order || true
docker rm zx-order || true
docker rmi zx-order || true
docker build -t zx-order .
docker run -d -p 8888:8888 --name zx-order zx-order:latest

备注:

  1. 上图用了 docker logs -f 是为了方便看日志,真实环境不要用,因为会一直等待日志,构建任务会失败;

  2. 加 "|| true" 是如果命令执行失败也会继续实行,为了防止第一次没有该镜像报错;

  3. 保存:点击保存即可;

  4. 构建:查看 Jenkins 控制台输出,输出如下,证明成功;

5. 验证

docker ps # 查看是否有自己的容器
docker logs # 自己的容器名,查看日志是否正确
# 打开浏览器访问项目
来源:blog.csdn.net/zqqiang0307/article/details/120458586
后端专属技术群

构建高质量的技术交流社群,欢迎从事编程开发、技术招聘HR进群,也欢迎大家分享自己公司的内推信息,相互帮助,一起进步!

文明发言,以交流技术职位内推行业探讨为主

广告人士勿入,切勿轻信私聊,防止被骗

加我好友,拉你进群

相关推荐

  • 7个理由:从Java8升级到Java17
  • 基于Transformer和注意力的可解释核苷酸语言模型,用于pegRNA优化设计
  • 像搭乐高一样做数学定理证明题,GPT-3.5证明成功率达新SOTA
  • ChatGPT上新文件分析、自动搜索等功能,初创公司的产品被取代?
  • 苹果文生图大模型亮相:俄罗斯套娃式扩散,支持1024x1024分辨率
  • 图灵奖得主吵起来了,LeCun:Bengio、Hinton等的AI灭绝论是荒谬的
  • 比亚迪今年的薪资。。
  • 生成式AI迫使Stack Overflow裁员28%
  • 雷军谈澎湃OS存储扩容;传字节除夕统一放假;小米14开机画面显示仍基于安卓;大众汽车软件部门计划裁员 2000 人
  • Windows 11 发布两年,仍“远远落后”于 Windows 10
  • 马斯克440亿美元收购Twitter一年后:全力“下云”,成本速降60%,功能代码从70万行减少至7万!
  • 一个小技巧,显著提升大模型推理能力!加州大学提出MAF多反馈框架
  • 视觉霸主SAM和文图霸主CLIP强强联合!苹果联合UIUC,发布统一视觉模型SAM-CLIP,或掀起多模态新浪潮
  • 一次出手3个项目,LP会不会觉得我太冲动了?
  • 🥇 2023人工智能年度评选!还没截止,别错过了 🤩
  • 百川智能推出全球最长上下文窗口大模型Baichuan2-192K,一次可输入35万字超越Claude2
  • 豆瓣9分线代教材免费了!斯坦福伯克利都在用,新版PDF直接下载
  • ChatGPT再进化!全工具All in One,网友:多少创业项目死于今天
  • 中文最强开源大模型来了!130亿参数,0门槛商用,来自昆仑万维
  • 科学春晚,还得是B站:稚晖君机械臂搭广寒宫,院士下半身直接消失