日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jenkin+docker 构建项目

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jenkin+docker 构建项目 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

jenkins發布項目

在構建項目之前我們需要做一些配置,安裝一些插件

  • 點擊系統管理

  • 點擊插件管理

  • 需要安裝一下這個maven插件

  • 插件安裝完成之后我們需要配置一下全局工具 "系統管理>全局工具配置"


注意:安裝了jdk 就不要在點自動安裝了

這里需要配置一下jdk , 別名隨便輸入,JAVA_HOME填寫安裝jenkins的服務器上面的JAVA_HOME就行
如果是linux機器輸入 下面的命令可以看到

[root@jk ~]# echo $JAVA_HOME /home/vsftpd/root/jdk1.8.0_201
  • jdk配置完成之后還需要配置一下maven(前提是服務器裝了maven)


和jdk配置差不多,這里要注意,如果HOME路徑不存在就會報上圖的錯誤,填寫正確就不會報錯,同樣輸入下面的命令可以看到MAVEN_HOME

[root@jk ~]# echo $MAVEN_HOME /opt/maven/apache-maven-3.6.3
  • 暫時我們就配置這兩個,點擊保存、應用就可以了


到這里我們的前期準備工作已經做好了,下面可以開始正式構建項目了

  • 首先我們這里構建一個maven項目,輸入自己的項目名稱,點擊完成。

  • 然后我們進入構建配置頁面,配置一下構建參數

  • 這里我們使用參數化構建,選擇字符參數(其他類型參數可以自己嘗試一下)

選擇字符參數后會出現以下界面

這里配置下項目名稱(這個是可有可無的,這里主要是測試下參數化配置,后期有其他參數需要傳遞在詳細配置)

  • 接下來是源碼管理配置

url輸入自己的Git項目路徑
Credentials 是需要驗證git的登錄信息
點擊圖中的 “添加” 按鈕
輸入自己登錄git的用戶名密碼就可以
分支默認就行,如果有自己分支,輸入分支名稱就行

注意:這里必須在安裝jenkins的服務器上安裝有git才行,否則待會構建項目會報錯。
  • 觸發器這里選擇默認就行

  • 接下來就行構建前后執行的命令配置

  • pre steps 為構建前執行,這里我們選擇執行 shell

輸入下面的執行shell 腳本的命令 (腳本文件是項目中編寫好的,文章后面會給出來)

/bin/bash runPre.sh ${PRODUCT_NAME}

  • build中需要填寫構建的pom.xml文件

(這里是單個項目直接填寫pom.xml就行,如果是maven父子工程,填寫父工程的pom.xml文件地址)

Goals and options:是構建項目執行的maven命令
(這里是通過docker-maven-plugin 插件將項目構建為一個docker鏡像,shell腳本主要也是控制docker鏡像的啟動,停止,刪除)

clean package docker:build #需要push要私有倉庫的添加下面的命令 clean package docker:build -DpushImage

Post Steps : 為構建后參數(運行腳本文件,主要是通過鏡像啟動容器)

/bin/bash runPost.sh ${PRODUCT_NAME}

到這里配置就OK了,點擊保存退出就行

可以看到我們項目現在大概是這樣的

下面我們再來看一下項目結構

這里我就寫了一個測試controller
Dockerfile文件可以不要(主要的之前測試了用dockerfile文件和用配置兩種情況)

  • 配置文件內容如下
<build><finalName>jenkins</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.0.0</version><configuration><!-- 定義鏡像名 --><imageName>${project.artifactId}:${project.version}</imageName><!-- 基礎鏡像,編譯為鏡像時會下載jdk--><baseImage>java</baseImage> <workdir>/</workdir><cmd>["java", "-version"]</cmd><!-- 相當于 java -jar jenkins.jar--><entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint><resources><resource><targetPath>/</targetPath><directory>${project.build.directory}</directory><include>${project.build.finalName}.jar</include></resource></resources><!-- 遠程docker地址 沒有配置docker遠程訪問的需要配置一下 --><dockerHost>http://1.1.1.1:2375</dockerHost></configuration></plugin></plugins></build>

這里對于初步接觸dockerfile配置的來說可以理解為
編譯docker鏡像,當我們通過鏡像啟動容器時會執行下面的命令

  • 為docker鏡像起名為${project.artifactId}:${project.version}

  • 在容器中下載并按照jdk

  • 執行 java -version 命令

  • 執行java -jar ${project.build.finalName}.jar 命令

這樣容器就啟動起來了。

開啟docker遠程訪問

  • 最后在看一下shell文件(runPre.sh)
#! /bin/shdockerPs=`sudo docker ps | grep -w $1 | head -n 1 | awk '{print $1}'` if [ "$dockerPs" != "" ];thensudo docker stop $dockerPsif [ $? -eq 0 ];thenecho "$dockerPs 容器已停止"fi fidockerPsAll=`sudo docker ps -a | grep -w $1 | head -n 1 | awk '{print $1}'` if [ "$dockerPsAll" != "" ];thensudo docker rm $dockerPsAllif [ $? -eq 0 ];thenecho "$dockerPsAll 容器已刪除"fi fiimage=`sudo docker images | grep -w $1 | head -n 1 | awk '{print $3}'` if [ "$image" != "" ] ;thensudo docker rmi $imageif [ $? -eq 0 ];thenecho "$image 鏡像已刪除"fi fi
  • runPost.sh
#! /bin/shimage=`sudo docker images | grep -w $1 | head -n 1 | awk '{print $3}'`#啟動容器 sudo docker run -itd --name $1 -p 31002:31002 $imageif [ $? -eq 0 ];thenecho "$1 容器已啟動" fi

這里注意項目文件放的位置不要隨意改動。

  • 下面我們就可以開始構建項目了,點擊 Build with Parameters,在點擊開始構建

  • 可以看到項目就開始構建

  • 點擊 #24 這次構建進去看下日志


這里可以看到,它是先去我們給定的git地址下載項目,然后執行我們配置好的runPre.sh 腳本
這里因為我之前構建過,所以會出現刪除容器,第一次構建不會出現
然后就開始執行docker-maven的構建操作
構建完成之后就會執行我們設置的腳本 runPost.sh (啟動容器)

這里可以看到容器啟動成功了。
網頁輸入地址就可以訪問到我們的程序
后面我們改了代碼,直接提交git,然后點擊構建項目就行
(jenkins是可以自動構建了,這里主要的初步構建,就沒有在說自動構建的情況)

服務器上輸出 docker ps 可以看到我們構建的容器正在運行中

[root@jk ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5a9f773f94ff 759df2d31d10 "java -jar jenkins.j…" 6 minutes ago Up 6 minutes 0.0.0.0:31002->31002/tcp jenkin s 079205d605c3 rabbitmq:management "docker-entrypoint.s…" 3 days ago Up 3 days 4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp rabbit mq c6f4d59b04c5 bcef5fd2979d "docker-entrypoint.s…" 3 weeks ago Up 8 days 0.0.0.0:27017->27017/tcp mongo 1093a905e2cc 6678c7c2e56c "nginx -g 'daemon of…" 4 weeks ago Up 2 days 0.0.0.0:8081->80/tcp nginx 4b02188b00fe registry "/entrypoint.sh /etc…" 4 weeks ago Up 5 days 0.0.0.0:5000->5000/tcp vigoro us_williamson

注 : 第一次啟動可能會報以下錯誤sudo: no tty present and no askpass program specified

附上解決方法

總結

以上是生活随笔為你收集整理的jenkin+docker 构建项目的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。