Jenkins 整合 Docker 自動化部署

Docker 安裝 Jenkins 配置自動化部署

1. Docker 安裝 Jenkins

1.1 拉取鏡像文件
docker pull jenkins/jenkins
1.2 創建掛載文件目錄
mkdir -p $HOME/jenkins_home
1.3 啟動容器
docker run -d -p 8080:8080 -v $HOME/jenkins_home:/var/jenkins_home --name jenkins jenkins/jenkins
1.4 進入容器查看初始密碼
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
1.5 登錄控制臺完成初始化

選擇安裝推薦的插件

在這里插入圖片描述

2. 配置自動化部署

2.1 配置項目文件

2.1.1 創建DockerFile文件

文件位置與Java文件目錄位置平級:

${WORKSPACE}/src/main/java

${WORKSPACE}/src/main/docker/DockerFile
在這里插入圖片描述

# 該鏡像需要依賴的基礎鏡像
FROM openjdk:8
ARG JAR_FILE
# 復制打包完成后的jar文件到/opt目錄下
COPY ${JAR_FILE} /project-name.jar
# 運行過程中創建一個project-name.jar文件
RUN bash -c 'touch /project-name.jar'
# 聲明服務運行在端口
EXPOSE 8801
ENV JAVA_OPTS="-Xms512m -Xmx2048m"
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /project-name.jar" ]
# 指定維護者的名字
MAINTAINER name
2.1.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><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.0.0</version><executions><execution><id>build-image</id><phase>package</phase><goals><goal>build</goal></goals></execution></executions><configuration><!--生產的鏡像名稱和版本--><imageName>project-category/${project.artifactId}:${project.version}</imageName><dockerHost>http://${dockerHost}:2375</dockerHost><forceTags>true</forceTags><!--dockerfile的位置--><dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory><!--jar名稱配置,用在dockerfile中,需要自己寫的可不用此配置--><buildArgs><JAR_FILE>${project.build.finalName}.jar</JAR_FILE></buildArgs><!--jar源位置--><resources><resource><targetPath>/</targetPath><directory>${project.build.directory}</directory><include>${project.build.finalName}.jar</include></resource></resources></configuration><dependencies><dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version></dependency></dependencies></plugin></plugins><!--build節點增加內容--><resources><resource><directory>src/main/resources</directory><!--開啟過濾,用指定的參數替換directory下的文件中的參數--><filtering>true</filtering></resource></resources>
</build>

2.2 配置Jenkins

2.2.1 創建項目部署腳本

在這里插入圖片描述

2.2.2 選擇構建自由風格項目

在這里插入圖片描述

2.2.3 General - 丟棄舊的構建歷史,節省磁盤空間

在這里插入圖片描述

2.2.4 源碼管理 - 配置Git代碼地址

1,配置Git地址(SSH)

2,配置賬號密碼

3,配置代碼分支

在這里插入圖片描述

2.2.5 源碼管理 - 高級克隆行為

在這里插入圖片描述

在這里插入圖片描述

2.2.6 Build Steps - 調用頂層 Maven 目標

在這里插入圖片描述

2.2.6.1 編譯依賴項目

如果當前項目依賴了本地其他項目,則需要先打包依賴項目,沒有則跳過此步驟

目標:clean install -pl rely-project-name -am

POM:${WORKSPACE}/rely-project-name/pom.xml

注:依賴項目的pom文件位置

在這里插入圖片描述

2.2.6.2 打包部署項目

前提:此步驟需要目標服務器上的Docker進行過新增用戶組操作和開發2375端口操作

目標: clean package -Pdev -DdockerHost=ip docker:build

注:-P 代表走不同的配置環境(非必須)

POM:${WORKSPACE}/project-name/pom.xml

注:打包項目的pom文件位置

在這里插入圖片描述

2.2.7 Build Steps - Execute shell script on remote host using ssh

在目標部署服務器上將代碼打包成鏡像,并啟動為容器

1,配置SSH賬號密碼

2,Docker啟動容器命令

-p 端口設置需要與DockerFile文件設置一致

-d 鏡像名稱需要與本地項目pom文件中配置的一致

在這里插入圖片描述

docker stop  project-center
echo '----stop container----'
docker rm  project-center
echo 'rm cont'
docker rmi `docker images | grep none | awk '{print $3}'`
echo '----rm none images----'
docker run  -it  --network=host    -p 8801:8801 --name  project-center -d project-category/project-name:1.0-SNAPSHOT 
echo '----start container----'
docker cp -L /usr/share/zoneinfo/Asia/Shanghai  project-center:/etc/localtime
docker cp -L /usr/share/zoneinfo/Asia/Shanghai  project-center:/etc/timezone
docker restart project-center

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/168134.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/168134.shtml
英文地址,請注明出處:http://en.pswp.cn/news/168134.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CentOS rpm安裝Nginx和配置

CentOS rpm安裝Nginx和配置 官方下載地址: http://nginx.org/en/download.html 介紹 Nginx(“engine x”)是一款由俄羅斯的程序設計師Igor Sysoev所開發高性能的 Web和 反向代理 服務器&#xff0c;也是一個 IMAP/POP3/SMTP 代理服務器。 rpm包安裝 #安裝nginx&#xff0c…

k8s部署的java服務查看連接nacos緩存的配置文件

一、問題描述 k8s部署的java服務&#xff0c;使用nacos中的配置文件&#xff0c;需要在緩存中查看該服務具體是使用到了哪些配置文件 二、解決 參考文檔: https://nacos.io/zh-cn/docs/system-configurations.html 文檔描述如下: 進入java服務容器進入用戶目錄下的nacos&a…

4-Docker命令之docker version

1.docker version介紹 docker version命令是用于查看docker容器的版本信息 2.docker version用法 docker version [參數] [root@centos79 ~]# docker version --helpUsage: docker version [OPTIONS]Show the Docker version informationOptions:-f, --format string Fo…

Android 12.0 mt6771新增分區功能實現四

1.前言 在12.0的系統rom開發中,在對某些特殊模塊中關于數據的存儲方面等需要新增分區來保存, 所以就需要在系統分區新增分區,接下來就來實現這個功能,看第四部分的新增分區的實現過程 2.mt6771新增分區功能實現四的核心類 device/mediatek/mt6771/ueventd.mt6771.rcdevice…

Java枚舉詳解

一、什么是枚舉類型 枚舉類型是一種特殊的數據類型&#xff0c;用于定義一組固定的命名常量。枚舉類型提供了一種更強大、更安全和更易讀的方式來表示一組相關的常量。 在Java中&#xff0c;枚舉類型是通過使用enum關鍵字來定義的。枚舉類型可以包含一個或多個枚舉常量&#xf…

常見狀態碼總結

常見狀態碼總結 2xx 200 OK&#xff1a;表示服務器成功處理了客戶端的請求&#xff0c;并返回所請求的數據。這是最常見的狀態碼&#xff0c;表示一切正常。201 Created&#xff1a;表示服務器成功處理了客戶端的 POST 請求&#xff0c;并在服務器上創建了新的資源。204 No C…

vue005——vue組件入門(非單文件組件和單文件組件)

一、非單文件組件 1.1、單文件組件的使用 1.1.1、局部注冊 1、第一步&#xff1a;創建school組件 2、第二步&#xff1a;注冊組件&#xff08;局部注冊&#xff09; 3、第三步&#xff1a;使用組件&#xff08;編寫組件標簽&#xff09; <!DOCTYPE html> <html>…

設計模式—里氏替換原則

1.概念 里氏代換原則(Liskov Substitution Principle LSP)面向對象設計的基本原則之一。 里氏代換原則中說&#xff0c;任何基類可以出現的地方&#xff0c;子類一定可以出現。 LSP是繼承復用的基石&#xff0c;只有當衍生類可以替換掉基類&#xff0c;軟件單位的功能不受到影…

Spring注解方式整合第三方框架

目錄 Spring整合MyBatis 原有xml方式整合配置如下 注解方式&#xff1a; Import可以導入如下三種類 第三方框架是指由其他開發者或團隊開發的軟件模塊或庫&#xff0c;供開發者在自己的應用程序中使用。這些框架通常提供了一系列已經封裝好的功能或工具&#xff0c;可節省開…

使用flask返回json格式的數據

Flask Flask是一個使用Python編寫的輕量級Web框架&#xff0c;它的設計理念是保持簡單、靈活和易擴展。它的核心是Werkzeug和Jinja2&#xff0c;并且它本身只提供了非常基礎的Web框架功能&#xff0c;例如路由和請求處理等。 使用Flask可以快速創建一個Web應用程序&#xff0c;…

跳躍游戲Ⅱ[中等]

優質博文&#xff1a;IT-BLOG-CN 一、題目 給定一個長度為n的0索引整數數組nums。初始位置為nums[0]。每個元素nums[i]表示從索引i向前跳轉的最大長度。換句話說&#xff0c;如果你在nums[i]處&#xff0c;你可以跳轉到任意nums[i j]處: 0 < j < nums[i] i j < n …

【Python 訓練營】N_8 打印阿姆斯特朗數

題目 輸入一個數&#xff0c;判斷是否為阿姆斯特朗數&#xff0c;阿姆斯特朗數指一個n位正整數等于其各位數字的n次方之和。其中n為3時是水仙花數。 分析 利用循環&#xff0c;獲取數的長度&#xff0c;根據長度和定義&#xff0c;拆分出來運算 答案 while True:n int(in…

【Python 訓練營】N_7 打印水仙花數

題目 打印出1000以內所有的"水仙花數"&#xff0c;所謂"水仙花數"是指一個三位數&#xff0c;其各位數字立方和等于該數本身。例如&#xff1a;153是一個"水仙花數"&#xff0c;因為1531的三次方&#xff0b;5的三次方&#xff0b;3的三次方。 …

數學啟發式

學習資料&#xff1a; 優化求解器 | Gurobi 數學啟發式算法&#xff1a;參數類型與案例實現 數學啟發式算法 | 可行性泵 (Feasibility Pump)算法精講&#xff1a;一份讓您滿意的【理論介紹編程實現數值實驗】學習筆記(PythonGurobi實現) 大佬到底是大佬&#xff01;這些資料太…

Mac Ubuntu雙系統解決WiFi和WiFi 5G網絡不可用問題

文章目錄 設備信息1. Ubuntu WiFi不可用解決方式查看Mac的網卡型號根據網卡型號搜索獲取到的解決方法查看WiFi名字問題參考鏈接 2. 解決WiFi重啟后失效問題打開終端創建.sh腳本文件編輯腳本文件復制粘貼腳本修改腳本權限創建并編輯systemd service文件復制粘貼下文到systemd se…

Typescript怎樣對URL參數進行編碼?

URL中的參數需要進行編碼&#xff08;URL encoding&#xff09;是為了確保傳輸的參數不包含特殊字符&#xff0c;同時確保數據的可靠性和安全性。 特殊字符如空格、&、?等在URL中有特殊含義&#xff0c;如果直接包含在參數值中&#xff0c;可能會導致解析錯誤或者安全問題…

只考數據結構,計算機評級C+,成都信息工程大學考情分析

成都信息工程大學(C) 考研難度&#xff08;☆☆&#xff09; 內容&#xff1a;23考情概況&#xff08;擬錄取和復試分析&#xff09;、院校概況、24專業目錄、23復試詳情、各專業考情分析、各科目考情分析。 正文1715字&#xff0c;預計閱讀&#xff1a;3分鐘 2023考情概況 …

Java實現求最大值

1 問題 接收用戶輸入的3個整數&#xff0c;如何將最大值作為結果輸出。 2 方法 采用“截圖文字代碼”的方式描述。 引入輸入包調用main()函數&#xff0c;提示并接收用戶輸入的3個整數&#xff0c;并交由變量a b c來保存。對接收的3個數據進行比較&#xff0c;先比較a和b&#…

原型 原型對象 原型鏈

在面向開發對象開發過程中對每一個實例添加方法&#xff0c;會使每一個對象都存在該添加方法造成空間浪費 通過對原型添加公共的屬性或方法&#xff0c;使所有實例對象都可訪問 原型為了共享公共的成員 prototype 原型: JS為每個構造函數提供一個屬性prototype(原型),它的值…

PostgreSQL數據庫初接觸

PostgreSQL默認端口為5432 windows下服務名為PostgreSQL-x64-10 10為版本 進程名為pg-ctl.exe 備份數據庫命令&#xff1a; pg_dump -h localhost -p 5432 -U postgres -f d:\20231124.dmp tcsl7//tcsl7為數據庫名 開始用-d 指定數據庫&#xff0c;后來提示沒-d參數 還…