本文主要介绍笔者自己使用 Jenkins 自动化打包 Springboot,并以 Docker 方式部署流程。这里没有用到 K8 等管理工具,规模还没到那一步,以下流程经过实践,对于小规模应用还可以。
架构
实现
Jenkins 共2个任务:构建任务和部署任务。
构建任务是源码到 Jar 包再到 Docker 镜像的过程。
部署任务对远程服务器 Docker 更新的过程。
构建任务
拉取代码
Gradle 打包
本文示例采用 jar 包方式
打 Docker 镜像
将应用 jar 包,复制到 Docker 镜像,基础镜像采用 AdoptOpenJDK 官方镜像。只作为运行环境,建议使用 JRE 镜像。 基于基础镜像也可以改造成自己的,比如:
FROM adoptopenjdk:11-jre-hotspot MAINTAINER dz@mangobeta.com RUN mkdir /opt/app COPY japp.jar /opt/app CMD ["java", "-jar", "/opt/app/japp.jar"]
推送 Docker 镜像到仓库
一般公司会内部搭建 Harbor 仓库,看具体使用。
部署任务
- SSH 连接到目标服务器
- 停止原有容器,拉取最新 Docker 镜像,Run 起来。