Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】
一、前言
Jenkins作为CI、CD的先驱者,虽然现在的风头没有Gitlab强了,但是还是老当益壮,很多中小公司还是使用比较广泛的。最近小编经历了一次Jenkins发包,感觉还不错,所以自己学习了一下。网上比较多的教程都是在Linux上搭建Jenkins,小编经过一个星期的探索终于完成了在docker中进行搭建。
最终版就是:通过git上传代码--->使用Jenkins构建自动打包--->把jar包打成docker镜像,运行在docker中,Windows下进行访问
主要记录一下一些踩过的坑和注意点,让后来人能够跟着小编一次完成!!
二、安装Docker
三、linux安装jdk和maven
1、下载JDK8Linux版本
官网下载太慢了,小编这里为大家下载好了:
链接:百度网盘地址
提取码:ov24
2、下载Maven
3、使用xftp上传到linux上
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
保存退出。
查看是否安装成功
java -version
mvn -v
6、配置Maven加速镜像
cd apache-maven-3.8.5/conf/
vim settings.xml
输入i
,进入输入模式
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
按下esc
,输入:wq
保存退出。
四、Docker安装Jenkins
1.准备挂载目录
cd home/
mkdir jenkins_home
一定要赋予修改权限,不然挂载会失败,我们这里给最高权限。
chmod -R 777 jenkins_home
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+端口号)
2. 获取密码
docker logs 容器id
3. 安装插件
4. 创建用户
5. 保存配置地址
6. 配置插件镜像
输入:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
点击提交
7. 安装ssh插件
安装完成重启一下Jenkins
8. 添加ssh登录账号凭据
点击系统管理
,找到下图点击
9. 配置全局ssh
点击系统管理
,找到系统配置
点击新增:
点击保存:
10. 配置jdk和maven
点击系统管理
,找到全局工具配置
:
点击保存
六、准备Springboot项目到git
1. 核心代码
我们看到只是一个请求打印,我们最后访问有docker成功
,代表我们构建发包成功!
2. pom内容
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
</plugins>
</build>
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仓库
七、使用Jenkins部署项目
1. 新建任务
2. 添加git凭据
选择刚刚添加的凭据报错信息消失
3. 添加maven构建
4. 增加构建执行shell
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
5. 立即构建
6. 控制台输出报错
我们看到打包成功了,就是在使用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
8. 查询docker镜像是否启动
docker images
docker ps
9. Win10进行访问测试
输入地址:http://192.168.84.133:8081/test/docker
七、总结
小编断断续续研究了一星期,太不容易了,中间也是遇到很多坑,只要是跟着小编走下去的基本都可以跑出来的!
看到这里还不给小编一键三连起来!!谢谢大家了哦~
有缘人才可以看得到的哦!!!
Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】的更多相关文章
- Jenkins打包Maven项目
Jenkins是一个用于持续集成的服务,简单些说,就是提交代码后,点一下(也可以设置自动检测),系统会自动下载你的代码并编译,然后复制或上传到指定位置,并给所有相关人发送邮件. 一.环境搭建 1.下载 ...
- 使用Docker安装Jenkins
Jenkins Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. 环境准备 腾讯云 硬件配置: ...
- Docker搭建Jenkins+Gogs+Maven/Gradle——代码自动化运维部署平台(三)
一.简介 1.CI/CD CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法.CI/CD 的核心概念是持续集成.持续交付和持续部署.作为一个面向开发和运营团队的解决方案,CI/C ...
- Jenkins把GitHub项目做成Docker镜像
本文是<Jenkins流水线(pipeline)实战>系列的第三篇,前面已对Jenkins流水线有了基本认识,也试过从GitHub下载pipeline脚本并执行,今天的实战是编写一段pip ...
- docker 安装jenkins 发布 asp.net core 2.0
安装Docker 其实安装Docker的过程,大家可以到Docker官网找到自己相对应的安装文档进行安装,Docker区分CE和EE的两个版本,具体这两个版本有什么区别,大家自行查阅相关资料,这里不再 ...
- Docker的安装以及使用Docker安装jenkins,gogs,tomcat(一)
(1)Docker的安装 官网安装链接 :https://yeasy.gitbooks.io/docker_practice/content/ 卸载旧版本 旧版本的 Docker 称为 docker ...
- docker 安装 jenkins 笔记
前提: 已安装好 docker-ce,可运行 docker 命令 命令: sudo docker pull jenkins mkdir -p ~/dockers/jenkins cd ~/docker ...
- Mac 环境docker 安装jenkins
网上很多的教程是讲的是Linux 上的Docker安装Jenkins,但是我用的是Mac,所以参考之前的前辈写的文章,记录一下自己的安装过程.非常感谢参考文章的前辈写的文章. 参考Docker安装Je ...
- jenkins打包安卓项目
jenkins打包安卓项目和其它项目差不了太多. 1.构建选择 gradle(如果不用gradle自己写脚本编译也可) 2.jenkins用户需要安装JDK.SDK,jenkins会自动下载gradl ...
随机推荐
- 关于data自定义属性
新的HTML5标准允许你在普通的元素标签里,嵌入类似data-*的属性,来实现一些简单数据的存取.它的数量不受限制,并且也能由JavaScript动态修改,也支持CSS选择器进行样式设置.这使得dat ...
- Python入门-面向对象-装饰器
1.变量作用域 全局变量和局部变量 #变量是有作用域的,分为全局变量和局部变量 num = 100 #这是全局变量 def change(): """ 查看变量作用域 & ...
- .NET如何快速比较两个byte数组是否相等
目录 前言 评测方案 几种不同的方案 For循环 Memcmp 64字长优化 SIMD Sse Avx2 SequenceCompare 总结 参考文献 前言 之前在群里面有群友问过一个这样的问题,在 ...
- springboot集成spring security安全框架入门篇
一. :spring security的简介 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下 ...
- CesiumJS 2022^ 原理[2] 渲染架构之三维物体 - 创建并执行指令
目录 回顾 预备知识:指令 预备知识:通道 1. 生成并执行指令 1.1. Primitive 生成指令 1.2. Context 对象负责执行 WebGL 底层代码 2. 多段视锥体技术 3. 指令 ...
- 2021.11.05 eleveni的水省选题的记录
2021.11.05 eleveni的水省选题的记录 因为eleveni比较菜,但是eleveni不想写绿题(总不能说是被绿题虐得不想写),eleveni决定继续水noip原题. --实际上菜菜的el ...
- HMS Core Discovery第14期直播预告~纵享丝滑剪辑,释放视频创作力
[导读] 拍摄.导入.特效.卡点.BGM-几步简单的操作,我们便可将生活的瞬间用视频记录与分享.应用前沿AI技术,提供一站式视频处理能力,帮助开发者们构建更智能.更易用.更专业的视频剪辑软件,打造视频 ...
- MySQL8自增主键变化
MySQL8自增主键变化 醉后不知天在水,满船清梦压星河. 一.简述 MySQL版本从5直接大跃进到8,相信MySQL8一定会有很多令人意想不到的改进,如果不想只会CRUD可以看看. 比如系统表引擎的 ...
- Linux获取本机公网IP,调整双节点主从服务的RPC调用逻辑
简单记录一次双节点的之间的服务调用叭 ~ 现有: 服务A的双节点A1.A2 服务B的双节点B1.B2 服务A 和服务B 通过 Netty 实现 RPC 通信,可能会导致比较玄学的问题.如图: 要做到 ...
- vue 时间过滤器
过滤器:定义:对要显示的数据进行特定格式化后再显示(适用于一些简单逻辑的处理).语法:1.注册过滤器: Vue.filter(name ,callback)或new Vue{filters:{}}2. ...