Jenkins + Docker + Maven + Windows 一键部署 Spring Boot 程序到远程 Linux 服务器


文章目录

  • Jenkins + Docker + Maven + Windows 一键部署 Spring Boot 程序到远程 Linux 服务器
  • 一、准备
  • 1、环境
  • 2、基本流程
  • 准备步骤
  • 基本思路
  • 3、相关命令
  • 4、Dockerfile 文件
  • 5、配置远程服务器、安装和使用 Publish Over SSH 插件
  • 二、Jenkins 项目
  • 1、创建 `Freestyle project` 项目
  • 2、构建步骤
  • 第一步:打包
  • 第二步:复制文件
  • 第三步:发送文件,并重启容器


一、准备

1、环境

  • 本地:Windows 10 ;
  • 本地:Jenkins + Publish Over SSH 插件;
  • 本地:Maven ;
  • 远程:Linux ;
  • 远程:Docker ;

2、基本流程

准备步骤

  • 使用 Dockerfile 构建镜像;

基本思路

  • 第一步:使用 mvn clean package -DskipTests 打包 Spring Boot 程序为 jar 包;
  • 第二步:使用 Windows 命令将 jar 包复制到 jenkins 项目工作目录;
  • 第三步:使用 Publish Over SSH 插件将 jar 包发送到远程 Linux 的 /home/zibo/docker/video/app 目录;
  • 第四步:使用 Publish Over SSH 插件执行 docker restart video-app 重启 video-app 容器;

需要构建镜像,如果是第一次启动容器,需要先启动容器,参考下面相关命令。

3、相关命令

### 镜像方式启动
# 构建镜像
docker build -t video-app-image .
# 删除镜像
docker rmi video-app-image

# 启动容器
docker run -itd -p 8081:8080 -v /home/zibo/docker/video/app:/app --name video-app video-app-image

# 重启容器
docker restart video-app

# 删除容器
docker rm video-app

# 查看实时日志
docker logs -f video-app

# 进入容器内部
docker exec -it video-app /bin/bash

# 离开容器
exit

4、Dockerfile 文件

# 该镜像需要依赖的基础镜像
FROM openjdk:17-jdk

# 创建挂载点
VOLUME /app

# 定义工作目录为/app,命令在此目录下执行
WORKDIR /app

# 指定docker容器启动时运行jar包,并将端口设置为8080
ENTRYPOINT ["java", "-jar", "-Dserver.port=8080", "app.jar"]

# 指定端口 8080
EXPOSE 8080

# 指定维护者的名字为zibo
LABEL maintainer="zibo"

5、配置远程服务器、安装和使用 Publish Over SSH 插件

见上一篇文章

Jenkins 发送文件到远程服务器:Publish Over SSH 插件


二、Jenkins 项目

1、创建 Freestyle project 项目

Jenkins + Docker + Maven + Windows 一键部署 Spring Boot 程序到远程 Linux 服务器_docker

2、构建步骤

第一步:打包

D:
cd D:\MyFile\GitHub\perfect-video
mvn clean package -DskipTests

图示

Jenkins + Docker + Maven + Windows 一键部署 Spring Boot 程序到远程 Linux 服务器_windows_02

第二步:复制文件

xcopy /y D:\MyFile\GitHub\perfect-video\target\app.jar C:\ProgramData\Jenkins\.jenkins\workspace\perfect-video

图示

Jenkins + Docker + Maven + Windows 一键部署 Spring Boot 程序到远程 Linux 服务器_windows_03

第三步:发送文件,并重启容器

Jenkins + Docker + Maven + Windows 一键部署 Spring Boot 程序到远程 Linux 服务器_maven_04