Jenkins--部署-打包Maven项目为Docker镜像并运行

Jenkins–部署-打包Maven项目为Docker镜像并运行


一、介绍

通过git上传代码—>使用Jenkins构建自动打包—>把jar包打成docker镜像,运行在docker中

二、linux安装jdk和maven

2.1、安装jdk11

https://blog.csdn.net/ylx814056815/article/details/127721096?spm=1001.2014.3001.5501

2.2、安装maven(建议)

https://blog.csdn.net/ylx814056815/article/details/127721178?spm=1001.2014.3001.5501

3、Docker安装Jenkins

https://blog.csdn.net/ylx814056815/article/details/127721195?spm=1001.2014.3001.5501

4、配置加速器

国内的插件仓库地址

http://mirror.xmission.com/jenkins/updates/current/update-center.json

5、配置ssh

5.1、安装ssh插件

目的是为了在linux中能执行shell脚本
Jenkins--部署-打包Maven项目为Docker镜像并运行_第1张图片

安装完成重启一下Jenkins

5.2、添加ssh登录账号凭据

Jenkins--部署-打包Maven项目为Docker镜像并运行_第2张图片

Jenkins--部署-打包Maven项目为Docker镜像并运行_第3张图片

Jenkins--部署-打包Maven项目为Docker镜像并运行_第4张图片

Jenkins--部署-打包Maven项目为Docker镜像并运行_第5张图片

在这里插入图片描述

5.3、配置全局ssh

系统管理–>系统配置
Jenkins--部署-打包Maven项目为Docker镜像并运行_第6张图片

Jenkins--部署-打包Maven项目为Docker镜像并运行_第7张图片

6、配置jdk和maven

系统管理 —> 全局工具配置

Jenkins--部署-打包Maven项目为Docker镜像并运行_第8张图片

Jenkins--部署-打包Maven项目为Docker镜像并运行_第9张图片

7、git项目的核心代码

代码结构
代码地址:https://gitee.com/YLXTXHYM/zdhbs.git

7.1、application.yml

server:
  port: 8888
  servlet:
    context-path: /say

7.2、bootstrap.yml

spring:
  application:
    name: demo1

7.3、docker-entrypoint.sh

#!/bin/bash

# JVM参数
JAVA_OPTS=
#  当JAVA_JVM_OPTS1长度大于0时为真
if [ -n "${JAVA_JVM_OPTS1}" ] ; then
  JAVA_OPTS="${JAVA_OPTS} ${JAVA_JVM_OPTS1}"
fi

if [ -n "${JAVA_JVM_OPTS2}" ] ; then
  JAVA_OPTS="${JAVA_OPTS} ${JAVA_JVM_OPTS2}"
fi
#  当LOG_OPTS长度==0时为真
LOG_OPTS=
if [ -z "${LOG_OPTS}" ] ; then
  LOG_OPTS="-Dlogging.file.name=${LOG_FILE} -Dlogging.file.path=${LOG_PATH}"
fi

# 打印配置参数
echo "JVM启动参数:"${JAVA_OPTS}
echo "日志参数:"${LOG_OPTS}
java -server ${JAVA_OPTS} ${LOG_OPTS} -jar  /opt/app/app.jar

7.4、Dockerfile

FROM java:8
# 环境变量
# 内存参数
ENV JAVA_JVM_OPTS1=-Xms1024m
ENV JAVA_JVM_OPTS2=-Xmx1024m

#日志输出路径
ENV LOG_PATH=/var/log/demo1/
ENV LOG_FILE=/var/log/demo1/demo1.log


WORKDIR /opt/app

# 拷贝代码和配置文件
COPY *.jar /opt/app/app.jar
COPY ./config  /opt/app/config
# 拷贝脚本到可执行目录
COPY docker-entrypoint.sh /usr/local/bin/

EXPOSE 8888
# 授予权限
RUN chmod +x /usr/local/bin/docker-entrypoint.sh

ENTRYPOINT ["docker-entrypoint.sh"]

7.5、业务代码

Jenkins--部署-打包Maven项目为Docker镜像并运行_第10张图片

8、使用Jenkins部署项目

8.1、创建任务

hello_world_docker
Jenkins--部署-打包Maven项目为Docker镜像并运行_第11张图片

8.2、general配置

打包Maven项目为Docker镜像并运行
Jenkins--部署-打包Maven项目为Docker镜像并运行_第12张图片

Jenkins--部署-打包Maven项目为Docker镜像并运行_第13张图片

8.2.1、丢弃旧的构建

  1. 问题:服务器资源是有限的,有时候保存了太多的历史构建,会导致Jenkins速度变慢,并且服务器硬盘资源也会被占满。
  2. 解决方案:
    1. 保持构建天数
    2. 保持构建的最大个数

8.3、源码管理

8.3.1、Git

支持主流的github和gitlab代码仓库。

8.3.2、Repository URL

仓库地址

8.3.3、Credentials

  1. 凭证
  2. 可以使用以下方式登陆git仓库
    1. HTTP方式的用户名密码
    2. RSA文件

8.3.4、Branches to build

  1. 构建的分支。
  2. */master表示master分支,也可以设置为其他分支。

8.3.5、源码浏览器

你所使用的代码仓库管理工具,如github, gitlab.

8.4、构建任务的触发器

不操作

8.4.1、触发远程构建(使用脚本)

该选项会提供一个接口,可以用来在代码层面触发构建。

8.4.2、其他工程构建后触发

在其他工程构建后构建

8.4.3、定时构建

每隔一段时间进行构建
日程表类似linux crontab书写格式。 列如
每隔30分钟进行一次构建:H/30 * * * * *

8.4.4、GitHub hook trigger for GITScm polling

当有更改push到gitlab代码仓库,即触发构建。

8.4.5、轮询 SCM

该选项是配合 2.3.4 使用的。
当代码仓库发生改动,jenkins并不知道。需要配置这个选项,周期性的去检查代码仓库是否发生改动

8.5、添加maven构建

clean
package

/var/jenkins_home/workspace/hello_world_docker/helloylx/pom.xml

Jenkins--部署-打包Maven项目为Docker镜像并运行_第14张图片

Jenkins--部署-打包Maven项目为Docker镜像并运行_第15张图片

POM路径可以先构建后生成workspace文件夹查看
Jenkins--部署-打包Maven项目为Docker镜像并运行_第16张图片

Jenkins--部署-打包Maven项目为Docker镜像并运行_第17张图片

8.6、增加构建执行shell

Jenkins--部署-打包Maven项目为Docker镜像并运行_第18张图片

Jenkins--部署-打包Maven项目为Docker镜像并运行_第19张图片

#!/bin/bash
# 服务名称
server_name=helloylx
port=8888
 
# 项目目录
project_dir=/var/jenkins_home/workspace/hello_world_docker/$server_name

 
cp $project_dir/target/*.jar  $project_dir/docker


# 进入docker目录
cd $project_dir/docker/


# 修改jar权限
chmod 755 *.jar

echo "看看docker能不能用"
docker -v

echo "停止$server_name容器"
# 停止容器
docker stop $server_name

echo "删除$server_name容器"
# 删除容器
docker rm $server_name
echo "删除$server_name镜像"
# 删除镜像
docker rmi $server_name
echo "打包镜像"
# 打包镜像
docker build -t $server_name .
echo "运行镜像"
# 运行镜像
docker run -d -p $port:$port --name $server_name $server_name

9、测试

Jenkins--部署-打包Maven项目为Docker镜像并运行_第20张图片

9.1、查看镜像

docker images
Jenkins--部署-打包Maven项目为Docker镜像并运行_第21张图片

9.2、查看容器

docker ps | grep helloylx
在这里插入图片描述

9.3、测试应用

http://192.168.145.130:8888/say/sayHello

Jenkins--部署-打包Maven项目为Docker镜像并运行_第22张图片

三、打包Maven项目为Docker镜像并运行(选择分支)

1、操作步骤

1.1、下载参数化插件

Git Parameter
Jenkins--部署-打包Maven项目为Docker镜像并运行_第23张图片

1.2、general 新增配置

  1. branchName
  2. 分支名称

Jenkins--部署-打包Maven项目为Docker镜像并运行_第24张图片

Jenkins--部署-打包Maven项目为Docker镜像并运行_第25张图片

1.3、选择分支构建

Jenkins--部署-打包Maven项目为Docker镜像并运行_第26张图片

1.4、测试验证dev分支

http://192.168.145.130:8888/say/sayHello

Jenkins--部署-打包Maven项目为Docker镜像并运行_第27张图片

你可能感兴趣的:(自动化部署Jenkins,jenkins,maven,docker)