Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】
source link: https://blog.51cto.com/wangzhenjun/5373487
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Jenkins作为CI、CD的先驱者,虽然现在的风头没有Gitlab强了,但是还是老当益壮,很多中小公司还是使用比较广泛的。最近小编经历了一次Jenkins发包,感觉还不错,所以自己学习了一下。网上比较多的教程都是在Linux上搭建Jenkins,小编经过一个星期的探索终于完成了在docker中进行搭建。
最终版就是:通过git上传代码—>使用Jenkins构建自动打包—>把jar包打成docker镜像,运行在docker中,Windows下进行访问
主要记录一下一些踩过的坑和注意点,让后来人能够跟着小编一次完成!!
二、安装Docker
三、linux安装jdk和maven
1、下载JDK8Linux版本
2、下载Maven
3、使用xftp上传到linux上
解压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
小编断断续续研究了一星期,太不容易了,中间也是遇到很多坑,只要是跟着小编走下去的基本都可以跑出来的!
看到这里还不给小编一键三连起来!!谢谢大家了哦~
有缘人才可以看得到的哦!!!
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK