Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

一、前言

Jenkins作为CI、CD的先驱者,虽然现在的风头没有Gitlab强了,但是还是老当益壮,很多中小公司还是使用比较广泛的。最近小编经历了一次Jenkins发包,感觉还不错,所以自己学习了一下。网上比较多的教程都是在Linux上搭建Jenkins,小编经过一个星期的探索终于完成了在docker中进行搭建。

最终版就是:通过git上传代码—>使用Jenkins构建自动打包—>把jar包打成docker镜像,运行在docker中,Windows下进行访问

主要记录一下一些踩过的坑和注意点,让后来人能够跟着小编一次完成!!

二、安装Docker

安装Docker

三、linux安装jdk和maven

1、下载JDK8Linux版本

官网下载太慢了,小编这里为大家下载好了:

链接:百度网盘地址
提取码:ov24

2、下载Maven

maven3.8.5下载链接

3、使用xftp上传到linux上

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

4、解压

解压maven

tar -zxvf apache-maven-3.8.5-bin.tar.gz

重命名maven

mv apache-maven-3.8.5-bin.tar.gz apache-maven-3.8.5

解压jdk

tar -zxvf jdk-8u333-linux-x64.tar.gz

重命名jdk

mv jdk-8u333-linux-x64.tar.gz jdk1.8

5、配置环境变量

进入环境变量文件

vim /etc/profile

添加jdk和manven配置
输入 i,进入输入模式

注意自己的安装目录,放在文件最上面就行

JAVA_HOME=/usr/local/java/jdk1.8
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
export MAVEN_HOME=/usr/local/java/apache-maven-3.8.5
export PATH=${MAVEN_HOME}/bin:${PATH}

按下 esc ,输入 :wq保存退出。

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

查看是否安装成功

java -version
mvn -v

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

6、配置Maven加速镜像

cd apache-maven-3.8.5/conf/
vim settings.xml

输入 i,进入输入模式


        alimaven
        aliyun maven
        http://maven.aliyun.com/nexus/content/groups/public/
        central

按下 esc ,输入 :wq保存退出。

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

四、Docker安装Jenkins

1.准备挂载目录

cd home/
mkdir jenkins_home

一定要赋予修改权限,不然挂载会失败,我们这里给最高权限。

chmod -R 777 jenkins_home

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

2. 执行docker命令

docker run -di --name=myjenkins -p 8080:8080 -v /home/jenkins_home:/var/jenkins_home \
-v /usr/local/java/jdk:/usr/local/jdk1.8 \
-v /usr/local/java/apache-maven-3.8.5:/usr/local/apache-maven-3.8.5 \
-v $(which docker):/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts

-v /home/jenkins_home:/var/jenkins_home:是对容器内存储Jenkins的一些配置信息的文件夹
-v /usr/local/java/jdk:/usr/local/jdk1.8:是把linux下的jdk和容器内的关联(配置Jenkins时使用)
-v /usr/local/java/apache-maven-3.8.5:/usr/local/apache-maven-3.8.5:是把linux下的maven和容器内的关联(配置Jenkins时使用)

-v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock:是可以在Jenkins容器里使用我们Linux下的docker。

五、配置Jenkins

1. 进入Jenkins

输入: http://192.168.84.133:8080/(ip+端口号)

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

2. 获取密码

docker logs 容器id

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】
Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】
Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

3. 安装插件

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】
Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

4. 创建用户

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

5. 保存配置地址

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

6. 配置插件镜像

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】
Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】
输入: https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

点击提交

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】
Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

7. 安装ssh插件

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】
安装完成重启一下Jenkins

8. 添加ssh登录账号凭据

点击 系统管理,找到下图点击

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】
Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】
Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

9. 配置全局ssh

点击 系统管理,找到 系统配置

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】
点击新增:

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】
点击保存:
Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

10. 配置jdk和maven

点击 系统管理,找到 全局工具配置

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】
点击保存

六、准备Springboot项目到git

1. 核心代码

我们看到只是一个请求打印,我们最后访问有 docker成功,代表我们构建发包成功!

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

2. pom内容


            org.springframework.boot
            spring-boot-maven-plugin

                        repackage

                true

3. yml文件

这里只指定了端口号

server.port=8081

4. Dockerfile

和pom文件同级

FROM java:8

COPY *.jar /app.jar

CMD ["--server.port=8080"]

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "/app.jar"]

5. 上传git仓库

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

七、使用Jenkins部署项目

1. 新建任务

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】
Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

2. 添加git凭据

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】
Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】
选择刚刚添加的凭据报错信息消失
Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

3. 添加maven构建

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】
Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

4. 增加构建执行shell

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】
shell脚本:
#!/bin/bash
服务名称
SERVER_NAME=jenkins

源jar名称,mvn打包之后,target目录下的jar包名称
JAR_NAME=demo-0.0.1-SNAPSHOT

jenkins下的目录
JENKINS_HOME=/var/jenkins_home/workspace/jenkins

等待三秒
echo sleep 3s
sleep 1
echo sleep 2s
sleep 1
echo sleep 1s
sleep 1

echo "结束进程完成"

cd $JENKINS_HOME/target

cp $JENKINS_HOME/Dockerfile $JENKINS_HOME/target

修改文件权限
chmod 755 $JAR_NAME.jar

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

echo "停止容器"
停止容器
docker stop springboot

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

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

5. 立即构建

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

6. 控制台输出报错

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】
我们看到打包成功了,就是在使用docker命令的时候出现权限问题,这是我们要给docker.sock权限就可以解决了!!

报错信息:

Got permission denied while trying to connect to the Docker daemon socket at
 unix:///var/run/docker.sock: Post
 "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/springboot/stop": dial unix
 /var/run/docker.sock: connect: permission denied

解决方案:

chmod a+rw /var/run/docker.sock

7.在次构建

我们发现没有报错,也看到了容器的id

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

8. 查询docker镜像是否启动

docker images
docker ps

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

9. Win10进行访问测试

输入地址: http://192.168.84.133:8081/test/docker

Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

七、总结

小编断断续续研究了一星期,太不容易了,中间也是遇到很多坑,只要是跟着小编走下去的基本都可以跑出来的!
看到这里还不给小编一键三连起来!!谢谢大家了哦~

有缘人才可以看得到的哦!!!

点击访问!小编自己的网站,里面也是有很多好的文章哦!

Original: https://www.cnblogs.com/wang1221/p/16362058.html
Author: 小王写博客
Title: Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/615631/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 基本数据类型-java学习日记

    1.不同进制的数据组成 二进制: 由0,1组成。以0b开头 八进制: 由0,1,…7组成。以0开头 十进制:由0,1,…9组成。整数默认是十进制 十六进制:…

    Java 2023年6月5日
    090
  • WebBrowser隐藏后自动销毁的BUG以及解决办法

    程序主界面上有个浏览器控件,里面是google地图,需要点击一个按钮后隐藏浏览器控件,显示其他界面,而且要做到还可以切换到原来的地图上。 一开始只是在浏览器上覆盖了一个图片控件,没…

    Java 2023年5月29日
    065
  • Mall谷粒商城(基础篇的开发)

    项目简介 Mall商城项目致力于打造一个完整的大型分布式架构的电商平台,采用先阶段流行的前后端分离模式编写。 Mall商城是一套电商项目,包括前台的商城系统以及后台管理系统,基于S…

    Java 2023年6月5日
    069
  • 【力扣】83. 删除排序链表中的重复元素

    存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。返回同样按升序排列的结果链表。 示例 1: 输入:head = [1,…

    Java 2023年6月8日
    060
  • 【力扣】1310. 子数组异或查询

    有一个正整数数组 arr,现给你一个对应的查询数组 queries,其中 queries[i] = [Li, Ri]。 对于每个查询 i,请你计算从 Li 到 Ri 的 XOR 值…

    Java 2023年6月8日
    067
  • java——继承

    补充细节如下 访问修饰符号 ​ public        同类 同包 子类 不同包 ​ protected     同类 同包 子类 ​ 默认           同类 同包 ​…

    Java 2023年6月5日
    074
  • SpringBoot整合EMQ

    1.引入依赖 org.eclipse.paho org.eclipse.paho.client.mqttv3 1.2.5 2.发布消息到EMQ (1)搭建基本的springBoot…

    Java 2023年6月9日
    087
  • Nacos学习

    1、一文详解 Nacos 高可用特性 2、Nacos 集群部署模式最佳实践 摘要: nacos客户端重试机制: 逻辑非常简单,拿到地址列表,在请求成功之前逐个尝试,直到成功为止。该…

    Java 2023年6月5日
    080
  • 操作线程的方法

    操作线程的方法操作线程有很多方法,这些方法可以使线程从某一种状态过渡到另一种状态。 线程的休眠能控制线程行为的方法之一是调用sleep()方法,sleep()方法可以指定线程休眠的…

    Java 2023年6月9日
    072
  • Nginx核心知识100讲学习笔记(陶辉)Nginx架构基础(三)

    一、Nginx如何通过连接池处理网络请求 1、连接池 1、预分配的connections_n 个链接 bash;gutter:true; http://nginx.org/en/d…

    Java 2023年5月30日
    072
  • List集合

    一、什么是集合? 顾名思义集合就相当于一个容器,容器就可以存储,只不过在java中存储的是对象,而对象本身是在堆内存中的,所以集合中存放的是一个个对象的引用。 二、集合和数组的区别…

    Java 2023年6月9日
    067
  • 全链路压测的整体架构设计,以及5种实现方案流量染色方案、数据隔离方案、接口隔离方案、零侵入方案、服务监控方案【代码级别】

    业务模块介绍 现在我们对整体的业务进行介绍以及演示 5. 全链路整体架构 上面介绍了为什么需要全链路压测,下面来看下全链路压测的整体架构。 ​ 整体架构如下主要是对压测客户端的 压…

    Java 2023年6月15日
    0109
  • Logback 快速入门 / 使用详解

    一、简介 Java 开源日志框架,以继承改善 log4j 为目的而生,是 log4j 创始人 Ceki Gülcü 的开源产品。它声称有极佳的性能,占用空间更小,且提供其他日志系统…

    Java 2023年6月6日
    074
  • 让服务器apache/iis/nginx支持.apk/ipa文件下载

    IIS服务器不能下载.apk文件的原因:iis的默认MIME类型中没有.apk文件,所以无法下载。 IIS服务器不能下载.apk文件的解决办法:既然.apk无法下载是因为没有MIM…

    Java 2023年5月30日
    081
  • maven工程servlet实例之导入项目依赖jar包

    maven工程servlet实例之导入项目依赖jar包 添加 jar 包的坐标时,还可以指定这个 jar 包将来的作用范围。每个 maven 工程都需要定义本工程的坐标,坐标是 m…

    Java 2023年6月6日
    078
  • 简明 Java 错误处理机制

    用个最简单的例子来展示为什么需要错误处理,以及怎么用。 import java.io.FileInputStream; import java.io.FileNotFoundExc…

    Java 2023年5月29日
    082
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球