Docker+Jenkins+Gitee自動化項目部署

前置條件

docker安裝成功
按照下面配置加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://register.librax.org"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

一、拉取Jenkins鏡像

docker pull jenkins/jenkins:lts
docker images #查看鏡像

二、宿主機安裝好maven

  • 命令下載
    wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
  • 官網下載后傳到Linux服務器
  • 然后使用命令進行解壓
tar -zxvf apache-maven-3.6.3-bin.tar.gz

解壓需要解壓到這個目錄下面 /opt/develop_resource/apache-maven-3.6.3,因為后面再啟動jenkins的時候需要掛載在他容器的目錄里面

  • 宿主機上的 /opt/develop_resource/apache-maven-3.6.3 目錄將會被掛載到 Docker 容器內的/opt/maven/apache-maven-3.6.3 目錄上。
  • 如果/opt/maven/apache-maven-3.6.3 在容器內部不存在,Docker 會自動創建這個目錄
  • 在容器運行期間,對 /opt/maven/apache-maven-3.6.3 內部所做的任何更改都會反映到宿主機的 /opt/develop_resource/apache-maven-3.6.3 目錄中,反之亦然
  • 配置maven鏡像加速
    在/opt/develop_resource/apache-maven-3.6.3/conf找到setting文件
    新增配置:
<mirrors><mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/repositories/central/</url></mirror></mirrors>

在這里插入圖片描述

三、運行啟動Jenkins

先在宿主機創建Jenkins的掛載目錄

mkdir -p /home/jenkins/workspace

運行啟動jenkins命令如下:

docker run -uroot -d --restart=always --privileged=true \-p 10240:8080 -p10241:50000 \-v /home/jenkins/workspace/:/var/jenkins_home/workspace \-v /var/run/docker.sock:/var/run/docker.sock \-v /usr/bin/docker:/usr/bin/docker \-v /opt/develop_resource/apache-maven-3.6.3:/opt/maven/apache-maven-3.6.3 \-e MAVEN_HOME=/opt/maven/apache-maven-3.6.3 \-e PATH="/opt/maven/apache-maven-3.6.3/bin:/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" \--name jenkins jenkins/jenkins:lts

通過docker ps指令可以查看容器是否啟動
在這里插入圖片描述
Jenkins啟動完整后進入容器查看maven是否配置正確

docker exec -it jenkins bash
mvn -v

在這里插入圖片描述
四、瀏覽器訪問Jenkins,ip+10240
注意:首次進入需要獲取管理員密碼,可以進入Jenkins容器查看

docker exec -it jenkins bash
cat /var/jenkins_home/secrets
這個目錄下存了管理員密碼

進入后可以新建一個賬號,插件可選擇性安裝,這里略

五、Jenkins后臺配置

  1. 配置maven
    在這里插入圖片描述

    新增環境變量并保存
    注意這里的路徑是根據啟動容器來配置的
 M2_HOME  /opt/maven/apache-maven-3.6.3PATH+EXTRA  $M2_HOME/bin
  1. 安裝必要的插件
    在這里插入圖片描述
    在這里插入圖片描述
    搜索框依次搜索并安裝
  • gitee使用:Gitee
  • maven 插件:Maven Integration plugin
  • SSH遠程連接插件:Publish Over SSH
  1. 配置環境
    在這里插入圖片描述
    系統配置里找到gitee
    在這里插入圖片描述
    在這里插入圖片描述
    令牌獲取地址

在這里插入圖片描述
4. 配置ssh(還是在上面菜單,往下滑找到這個配置位置)
在這里插入圖片描述
在這同時修改服務器密碼
在這里插入圖片描述
5. tool模塊配置maven
在這里插入圖片描述
在這里插入圖片描述
這里配置的地址與前面配置的保持一致即可
6. 構建任務,新建自動化部署任務
在這里插入圖片描述
在這里插入圖片描述
選擇第一個點擊確定并進入任務配置
在這里插入圖片描述
在這里插入圖片描述

填寫gitee倉位地址以及gitee認證信息

在這里插入圖片描述
一直滑到最下面然后點擊生成按鈕 輸入框中就會出現密碼,將這個密碼復制到gitee倉庫
在這里插入圖片描述
進入gitee代碼倉庫,將密碼填入,
url:
在這里插入圖片描述
配置輪詢
在這里插入圖片描述
7.下一步在添加構建步驟這里選擇執行shell

#!/bin/bash
# 退出腳本如果任何一個命令失敗
set -e# 刪除舊的Docker容器
echo "Removing old container..."
docker rm -f app_docker || true # 忽略錯誤,以防容器不存在
# 刪除舊的Docker鏡像
echo "Removing old image..."
docker rmi -f app_docker:1.0 || true # 忽略錯誤,以防鏡像不存在# 構建Java應用程序
# echo "Building Java application..."
mvn clean install -Dmaven.test.skip=true# 構建新的Docker鏡像
echo "Building new Docker image..."
docker build -t app_docker:1.0 -f ./src/main/docker/Dockerfile .# 運行新的Docker容器
echo "Running new Docker container..."
docker run -d -p 8080:8080 --name app_docker app_docker:1.0echo "Application is now running."

這里在貼上項目的dockerfile

# 指定是基于哪個基礎鏡像
#FROM java:8
#FROM registry.cn-hangzhou.aliyuncs.com/library/java:8-jdk
FROM eclipse-temurin:8-jdk# 作者信息
MAINTAINER demo# 掛載點聲明
VOLUME /tmp# 將本地的一個文件或目錄,拷貝到容器的文件或目錄里
ADD /target/demoProject-2.6.13.jar springboot.jar#shell腳本
RUN bash -c 'touch /springboot.jar'# 將容器的8080端口暴露,給外部訪問。
EXPOSE 8080# 當容器運行起來時執行使用運行jar的指令
ENTRYPOINT ["java", "-jar", "springboot.jar"]#ENTRYPOINT ["java", "-jar", "/springboot.jar", "--spring.profiles.active=prod"]

改完之后通過git命令上傳到gitee上面后,jenkins會自動的進行構建
在這里插入圖片描述
最后成功了!!!
需要注意的是我暴露的端口是8080
這里shell命令中掛載的端口和dockerfile中暴露端口要一致才能進行

啟動成功后查看docker進程
在這里插入圖片描述

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

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

相關文章

穿梭在數字王國:Python進制轉換奇遇記

穿梭在數字王國:Python進制轉換奇遇記 想象一下,你是一位勇敢的探險家,正在穿越神秘的"數字王國"。在這個王國里,不同的地區使用著不同的語言(或者說,進制)。二進制村的居民只懂"0"和"1";八進制鎮的人們使用0到7的數字;而十六進制城的…

FileInputStream 詳解與記憶方法

FileInputStream 詳解與記憶方法 一、FileInputStream 核心概念 FileInputStream 是 Java 中用于從文件讀取原始字節的類&#xff0c;繼承自 InputStream 抽象類。 1. 核心特點 特性說明繼承關系InputStream → FileInputStream數據單位字節&#xff08;8bit&#xff09;用…

設計模式 四、行為設計模式(2)

五、狀態模式 1、概述 狀態設計模式是一種行為型設計模式&#xff0c;它允許對象在其內部狀態發生時改變其行為&#xff0c;這種模式可以消除大量的條件語句&#xff0c;并將每個狀態的行為封裝到單獨的類中。 狀態模式的主要組成部分如下&#xff1a; 1&#xff09;上…

大模型學習八:?Sealos 私有化部署之VMware 安裝ubuntu22.04 虛擬機安裝(實操)

一、說明 windows 11 ubuntu22.04.5 安裝5個虛擬機&#xff0c;3個master 2個node 二、安裝 Vmware 17&#xff08;沒成功&#xff0c;但你可以成功&#xff09; 我的電腦配置比較舊&#xff0c;直接提示處理器不支持xsave 無法打開虛擬機的電源&#xff0c;網上方法試過了…

Win32++ 使用初探

文章目錄 1. 環境要求2. Win32安裝3. 項目創建3.1 項目創建&#xff08;1&#xff09;直接使用Win32里的示例Sample&#xff08;2&#xff09;自行創建項目 最近想用 VC寫些 UI&#xff0c;但又不太想用 MFC&#xff0c;正好對界面要求不太高&#xff0c;就使用了一下 Win3…

R 語言科研繪圖第 38 期 --- 餅狀圖-玫瑰

在發表科研論文的過程中&#xff0c;科研繪圖是必不可少的&#xff0c;一張好看的圖形會是文章很大的加分項。 為了便于使用&#xff0c;本系列文章介紹的所有繪圖都已收錄到了 sciRplot 項目中&#xff0c;獲取方式&#xff1a; R 語言科研繪圖模板 --- sciRplothttps://mp.…

Linux驅動開發進階(六)- 多線程與并發

文章目錄 1、前言2、進程與線程3、內核線程4、底半步機制4.1、軟中斷4.2、tasklet4.3、工作隊列4.3.1、普通工作項4.3.2、延時工作項4.3.3、工作隊列 5、中斷線程化6、進程6.1、內核進程6.2、用戶空間進程 7、鎖機制7.1、原子操作7.2、自旋鎖7.3、信號量7.4、互斥鎖7.5、comple…

第四節:React Hooks進階篇-useEffect依賴項為空數組[]與不寫的區別

陷阱題&#xff1a;閉包問題、Stale Closure舉例 一、依賴項為空數組[]與不寫的核心區別 行為空數組[]不寫依賴項執行時機僅在組件掛載時執行一次&#xff08;類似componentDidMount&#xff09;組件每次渲染后都執行&#xff08;類似componentDidUpdate&#xff09;更新觸發…

【第39節】windows編程:打造MFC版本任務管理器

目錄 一、項目概述 二、項目開發的各種功能關鍵 2.1 進程信息的獲取 2.2 線程信息的獲取 2.3 進程模塊信息的獲取 2.3.1 模塊快照 2.3.2 枚舉模塊 2.4 進程堆信息的獲取 2.5 窗口信息的獲取 2.6 文件信息的獲取 2.7 內存信息和CPU占用率的獲取 2.7.1 內存信息相關結…

計算軸承|滾動軸承故障頻率

一、軸承故障頻率概述 在旋轉機械故障診斷中&#xff0c;軸承故障頻率&#xff08;BPFO、BPFI、BSF、FTF&#xff09;是重要的分析依據。通過計算這些特征頻率&#xff0c;可以幫助工程師&#xff1a; 識別軸承故障類型&#xff08;內圈/外圈/滾動體故障&#xff09;制定振動…

【數據結構與算法】ArrayList 和 順序表

文章目錄 &#x1f332;List&#x1f332;1. 線性表&#x1f332;2. 順序表&#x1f33f;2.1 MyArrayList2.1.1 類中重寫所有接口方法1.新增元素2.在pos位置新增元素(指定位置)3.判定是否包含了某個特定元素 4.查找特定元素對應的位置 5.獲取pos下標的元素 6.給pos位置的元素替…

OceanBase 推出單機版 ,為中小規模業務提供高性價比方案

近日&#xff0c;OceanBase正式推出了全新的單機版數據庫。這款產品基于OceanBase自主研發的單機分布式一體化架構&#xff0c;具有精簡的架構設計和出色的兼容性&#xff0c;能夠為中小規模業務場景提供高性價比的數據庫解決方案&#xff0c;充分滿足客戶在不同業務規模下的多…

如何在 Vue 3 中實現百度地圖位置選擇器組件

如何在 Vue 3 中實現百度地圖位置選擇器組件 前言 在開發前端應用時&#xff0c;地圖選擇器是一個非常常見的需求。尤其是在一些需要用戶選擇地址的場景&#xff0c;如電商平臺、旅游網站、酒店預定等&#xff0c;百度地圖組件能提供準確的地理位置服務。在本文中&#xff0c…

Python中如何用正則表達式精準匹配IP地址?

在網絡編程和數據處理時&#xff0c;我們經常需要從文本中提取或驗證IP地址。Python的正則表達式(re模塊)是完成這個任務的利器。但你知道怎么寫才能準確匹配各種合法的IP地址嗎&#xff1f;今天我們就來詳細探討這個問題。 為什么需要IP正則表達式&#xff1f; 假設你正在分…

spring--聲明式事務

聲明式事務 1、回顧事務 要么都成功&#xff0c;要么都失敗&#xff01; 事務在項目開發中&#xff0c;十分重要&#xff0c;涉及數據的一致性問題 確保完整性和一致性 事務ACID&#xff1a; 原子性&#xff1a;事務是原子性操作&#xff0c;由一系列動作組成&#xff0c;…

Kotlin 學習-集合

/*** kotlin 集合* List:是一個有序列表&#xff0c;可通過索引&#xff08;下標&#xff09;訪問元素。元素可以在list中出現多次、元素可重復* Set:是元素唯一的集合。一般來說 set中的元素順序并不重要、無序集合* Map:&#xff08;字典&#xff09;是一組鍵值對。鍵是唯一的…

WPF 五子棋項目文檔

WPF 五子棋項目文檔 1. 項目概述 本項目是一個使用 Windows Presentation Foundation (WPF) 技術棧和 C# 語言實現的桌面版五子棋&#xff08;Gomoku&#xff09;游戲。它遵循 MVVM&#xff08;Model-View-ViewModel&#xff09;設計模式&#xff0c;旨在提供一個結構清晰、可…

計算機操作系統——死鎖(詳細解釋和處理死鎖)

系列文章目錄 計算機操作系統-計算機系統中的死鎖 文章目錄 系列文章目錄前言一、資源問題&#xff1a; 計算機系統當中的死鎖&#xff1a; 二、死鎖的定義、必要條件和處理方法&#xff1a; 1.死鎖的定義&#xff1a;2.產生死鎖的必要條件&#xff1a;3.處理死鎖的方法&#…

Springboot項目正常啟動,訪問資源卻出現404錯誤如何解決?

我在自己的springboot項目中的啟動類上同時使用了SprinBootApplication和ComponentScan注解, 雖然項目能夠正常啟動,但是訪問資源后,返回404錯誤,隨后在啟動類中輸出bean,發現controller創建失敗: 而后我將ComponentScan去掉后資源就能訪問到了. 原因 SprinBootApplication本身…

第十五屆藍橋杯C/C++B組省賽真題講解(分享去年比賽的一些真實感受)

試題A——握手問題 一、解題思路 直接用高中學的排列組合思路 二、代碼示例 #include<bits/stdc.h> using namespace std; int fun(int n) {int sum0;for(int i0;i<n;i){for(int ji1;j<n;j)sum; } return sum; } int main() {cout<<fun(50)-fun(7); }三、…