宝剑锋从磨砺出,梅花香自苦寒来。这篇文章主要讲述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版本
2、下载Maven
maven3.8.5下载链接
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
【Docker安装Jenkins打包Maven项目为Docker镜像并运行保姆级图文教学】解压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:8COPY *.jar /app.jarCMD ["--server.port=8080"]EXPOSE 8080ENTRYPOINT ["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 1echo "结束进程完成"cd $JENKINS_HOME/targetcp $JENKINS_HOME/Dockerfile $JENKINS_HOME/target# 修改文件权限
chmod 755 $JAR_NAME.jarecho "看看docker能不能用"
docker -vecho "停止容器"
# 停止容器
docker stop springbootecho "删除容器"
# 删除容器
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
文章图片
七、总结小编断断续续研究了一星期,太不容易了,中间也是遇到很多坑,只要是跟着小编走下去的基本都可以跑出来的!
看到这里还不给小编一键三连起来!!谢谢大家了哦~
有缘人才可以看得到的哦!!!
点击访问!小编自己的网站,里面也是有很多好的文章哦!
推荐阅读
- 一文带你了解J.U.C的FutureTaskFork/Join框架和BlockingQueue
- MYSQL group by 怎么能快一点,之别一根筋
- MySQL数据库(25)(外键 foreing key)
- MYSQL 8 统计信息持久化 与 null
- PostgreSQL Template
- MYSQL 5.7 VS 8 用函数你三思,三思
- 如何设计出一个比较合理的数据归档系统
- PostgreSQL 如何“霸占”系统OS cache 提升查询性能
- 看电影也可以学点什么