一、前言
Jenkins作為CI、CD的先驅(qū)者,雖然現(xiàn)在的風(fēng)頭沒有Gitlab強(qiáng)了,但是還是老當(dāng)益壯,很多中小公司還是使用比較廣泛的。最近小編經(jīng)歷了一次Jenkins發(fā)包,感覺還不錯(cuò),所以自己學(xué)習(xí)了一下。網(wǎng)上比較多的教程都是在Linux上搭建Jenkins,小編經(jīng)過一個(gè)星期的探索終于完成了在docker中進(jìn)行搭建。
最終版就是:通過git上傳代碼—>使用Jenkins構(gòu)建自動(dòng)打包—>把jar包打成docker鏡像,運(yùn)行在docker中,Windows下進(jìn)行訪問
主要記錄一下一些踩過的坑和注意點(diǎn),讓后來人能夠跟著小編一次完成??!
二、安裝Docker
Linux中安裝Docker,在Docker中安裝MySQL和Redis并在Windows下連接訪問(圖文教程)_掉發(fā)的小王的博客-CSDN博客
三、linux安裝jdk和maven
1、下載JDK8Linux版本
官網(wǎng)下載太慢了,小編在這里為大家下載好了:
鏈接:https://pan.baidu.com/s/1nlfc2gwL0Ho_wWbVuJiG4g提取碼:ov24
2、下載Maven
maven3.8.5下載鏈接:https://dlcdn.apache.org/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz
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、配置環(huán)境變量
進(jìn)入環(huán)境變量文件
vim /etc/profile
添加jdk和manven配置輸入i,進(jìn)入輸入模式
注意自己的安裝目錄,放在文件最上面就行
JAVA_HOME=/usr/local/java/jdk1.8CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarPATH=$JAVA_HOME/bin:$PATHexport JAVA_HOME CLASSPATH PATHexport MAVEN_HOME=/usr/local/java/apache-maven-3.8.5export PATH=${MAVEN_HOME}/bin:${PATH}
按下esc ,輸入:wq保存退出。
查看是否安裝成功
java -versionmvn -v
6、配置Maven加速鏡像
cd apache-maven-3.8.5/conf/vim settings.xml
輸入i,進(jìn)入輸入模式
alimaven aliyun maven http://maven.aliyun.com/nexus/content/groups/public/ central
按下esc ,輸入:wq保存退出。
四、Docker安裝Jenkins
1.準(zhǔn)備掛載目錄
cd home/mkdir jenkins_home
一定要賦予修改權(quán)限,不然掛載會(huì)失敗,我們這里給最高權(quán)限。
chmod -R 777 jenkins_home
2. 執(zhí)行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:是對(duì)容器內(nèi)存儲(chǔ)Jenkins的一些配置信息的文件夾-v /usr/local/java/jdk:/usr/local/jdk1.8:是把linux下的jdk和容器內(nèi)的關(guān)聯(lián)(配置Jenkins時(shí)使用)-v /usr/local/java/apache-maven-3.8.5:/usr/local/apache-maven-3.8.5:是把linux下的maven和容器內(nèi)的關(guān)聯(lián)(配置Jenkins時(shí)使用)
-v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock:是可以在Jenkins容器里使用我們Linux下的docker。
五、配置Jenkins
1. 進(jìn)入Jenkins
輸入:http://192.168.84.133:8080/(ip+端口號(hào))
2. 獲取密碼
docker logs 容器id
3. 安裝插件
4. 創(chuàng)建用戶
5. 保存配置地址
6. 配置插件鏡像
輸入:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
點(diǎn)擊提交
7. 安裝ssh插件
安裝完成重啟一下Jenkins
8. 添加ssh登錄賬號(hào)憑據(jù)
點(diǎn)擊系統(tǒng)管理,找到下圖點(diǎn)擊
9. 配置全局ssh
點(diǎn)擊系統(tǒng)管理,找到系統(tǒng)配置
點(diǎn)擊新增:
點(diǎn)擊保存:
10. 配置jdk和maven
點(diǎn)擊系統(tǒng)管理,找到全局工具配置:
點(diǎn)擊保存
六、準(zhǔn)備Springboot項(xiàng)目到git
1. 核心代碼
我們看到只是一個(gè)請(qǐng)求打印,我們最后訪問有docker成功,代表我們構(gòu)建發(fā)包成功!
2. pom內(nèi)容
org.springframework.boot spring-boot-maven-plugin repackage true
3. yml文件
這里只指定了端口號(hào)
server.port=8081
4. Dockerfile
和pom文件同級(jí)
FROM java:8COPY *.jar /app.jarCMD [“–server.port=8080”]EXPOSE 8080ENTRYPOINT [“java”, “-jar”, “/app.jar”]
5. 上傳git倉庫
七、使用Jenkins部署項(xiàng)目
1. 新建任務(wù)
2. 添加git憑據(jù)
選擇剛剛添加的憑據(jù)報(bào)錯(cuò)信息消失
3. 添加maven構(gòu)建
4. 增加構(gòu)建執(zhí)行shell
shell腳本:
#!/bin/bash# 服務(wù)名稱SERVER_NAME=jenkins# 源jar名稱,mvn打包之后,target目錄下的jar包名稱JAR_NAME=demo-0.0.1-SNAPSHOT# jenkins下的目錄JENKINS_HOME=/var/jenkins_home/workspace/jenkins# 等待三秒echo sleep 3ssleep 1echo sleep 2ssleep 1echo sleep 1ssleep 1echo “結(jié)束進(jìn)程完成”cd $JENKINS_HOME/targetcp $JENKINS_HOME/Dockerfile $JENKINS_HOME/target# 修改文件權(quán)限chmod 755 $JAR_NAME.jarecho “看看docker能不能用”docker -vecho “停止容器”# 停止容器docker stop springbootecho “刪除容器”# 刪除容器docker rm springbootecho “刪除鏡像”# 刪除鏡像docker rmi springbootecho “打包鏡像”# 打包鏡像docker build -t springboot .echo “運(yùn)行鏡像”# 運(yùn)行鏡像docker run -d -p 8081:8081 –name springboot springboot
5. 立即構(gòu)建
6. 控制臺(tái)輸出報(bào)錯(cuò)
我們看到打包成功了,就是在使用docker命令的時(shí)候出現(xiàn)權(quán)限問題,這是我們要給docker.sock權(quán)限就可以解決了??!
報(bào)錯(cuò)信息:
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.在次構(gòu)建
我們發(fā)現(xiàn)沒有報(bào)錯(cuò),也看到了容器的id
8. 查詢docker鏡像是否啟動(dòng)
docker images docker ps
9. Win10進(jìn)行訪問測試
輸入地址:http://192.168.84.133:8081/test/docker
七、總結(jié)
小編斷斷續(xù)續(xù)研究了一星期,太不容易了,中間也是遇到很多坑,只要是跟著小編走下去的基本都可以跑出來的!看到這里還不給小編一鍵三連起來??!謝謝大家了哦~
有緣人才可以看得到的哦!?。?/p>
小王博客站