Jenkins整合Docker自動(dòng)化部署的實(shí)現(xiàn)
1. Docker 安裝 Jenkins
1.1 拉取鏡像文件
docker pull jenkins/jenkins
1.2 創(chuàng)建掛載文件目錄
mkdir -p $HOME/jenkins_home
1.3 啟動(dòng)容器
docker run -d -p 8080:8080 -v $HOME/jenkins_home:/var/jenkins_home --name jenkins jenkins/jenkins
1.4 進(jìn)入容器查看初始密碼
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
1.5 登錄控制臺(tái)完成初始化
選擇安裝推薦的插件

2. 配置自動(dòng)化部署
2.1 配置項(xiàng)目文件
2.1.1 創(chuàng)建DockerFile文件
文件位置與Java文件目錄位置平級(jí):
${WORKSPACE}/src/main/java
${WORKSPACE}/src/main/docker/DockerFile
# 該鏡像需要依賴的基礎(chǔ)鏡像
FROM openjdk:8
ARG JAR_FILE
# 復(fù)制打包完成后的jar文件到/opt目錄下
COPY ${JAR_FILE} /project-name.jar
# 運(yùn)行過程中創(chuàng)建一個(gè)project-name.jar文件
RUN bash -c 'touch /project-name.jar'
# 聲明服務(wù)運(yùn)行在端口
EXPOSE 8801
ENV JAVA_OPTS="-Xms512m -Xmx2048m"
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /project-name.jar" ]
# 指定維護(hù)者的名字
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>
<!--生產(chǎn)的鏡像名稱和版本-->
<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節(jié)點(diǎn)增加內(nèi)容-->
<resources>
<resource>
<directory>src/main/resources</directory>
<!--開啟過濾,用指定的參數(shù)替換directory下的文件中的參數(shù)-->
<filtering>true</filtering>
</resource>
</resources>
</build>
2.2 配置Jenkins
2.2.1 創(chuàng)建項(xiàng)目部署腳本

2.2.2 選擇構(gòu)建自由風(fēng)格項(xiàng)目

2.2.3 General - 丟棄舊的構(gòu)建歷史,節(jié)省磁盤空間

2.2.4 源碼管理 - 配置Git代碼地址
1,配置Git地址(SSH)
2,配置賬號(hào)密碼
3,配置代碼分支

2.2.5 源碼管理 - 高級(jí)克隆行為


2.2.6 Build Steps - 調(diào)用頂層 Maven 目標(biāo)

2.2.6.1 編譯依賴項(xiàng)目
如果當(dāng)前項(xiàng)目依賴了本地其他項(xiàng)目,則需要先打包依賴項(xiàng)目,沒有則跳過此步驟
目標(biāo):clean install -pl rely-project-name -am
POM:${WORKSPACE}/rely-project-name/pom.xml
注:依賴項(xiàng)目的pom文件位置

2.2.6.2 打包部署項(xiàng)目
前提:此步驟需要目標(biāo)服務(wù)器上的Docker進(jìn)行過
新增用戶組操作和開發(fā)2375端口操作目標(biāo): clean package -Pdev -DdockerHost=ip docker:build
注:-P 代表走不同的配置環(huán)境(非必須)
POM:${WORKSPACE}/project-name/pom.xml
注:打包項(xiàng)目的pom文件位置

2.2.7 Build Steps - Execute shell script on remote host using ssh
在目標(biāo)部署服務(wù)器上將代碼打包成鏡像,并啟動(dòng)為容器
1,配置SSH賬號(hào)密碼
2,Docker啟動(dòng)容器命令
-p 端口設(shè)置需要與DockerFile文件設(shè)置一致
-d 鏡像名稱需要與本地項(xiàng)目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到此這篇關(guān)于Jenkins整合Docker自動(dòng)化部署的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Jenkins Docker自動(dòng)化部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Docker?+?jenkins項(xiàng)目打包鏡像部署詳細(xì)步驟(親測(cè)有效)
- Jenkins+Docker實(shí)現(xiàn)自動(dòng)化部署
- Docker安裝Jenkins并部署Maven項(xiàng)目詳細(xì)教程
- Jenkins+Docker?一鍵自動(dòng)化部署?SpringBoot?項(xiàng)目的詳細(xì)步驟
- 基于Docker與Jenkins實(shí)現(xiàn)自動(dòng)化部署的原理解析
- Docker搭建Jenkins并自動(dòng)化打包部署項(xiàng)目的步驟
- Docker+Jenkins實(shí)現(xiàn)一鍵自動(dòng)化部署項(xiàng)目的圖文教學(xué)
相關(guān)文章
docker search 搜索鏡像的實(shí)現(xiàn)示例
本文主要介紹了docker search搜索鏡像的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02
Docker向數(shù)據(jù)卷Volume寫入數(shù)據(jù)
這篇文章介紹了Docker向數(shù)據(jù)卷Volume寫入數(shù)據(jù)的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03
Docker搭建并啟動(dòng)Logstash的實(shí)現(xiàn)方式
這篇文章主要介紹了Docker搭建并啟動(dòng)Logstash的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
CentOS系統(tǒng)下docker的安裝配置及使用介紹
這篇文章主要介紹了CentOS系統(tǒng)下docker的安裝配置及使用詳細(xì)介紹,需要的朋友可以參考下2016-10-10
docker部署mysql8并設(shè)置可遠(yuǎn)程連接
本文主要介紹了docker部署mysql8并設(shè)置可遠(yuǎn)程連接,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
Docker跨平臺(tái)和環(huán)境部署的過程詳解
Docker是一個(gè)開放源代碼的容器化平臺(tái),它能夠?qū)崿F(xiàn)應(yīng)用及其依賴的打包,從而實(shí)現(xiàn)跨平臺(tái)和環(huán)境的快速部署,本文介紹了Docker的基本概念、優(yōu)勢(shì)和基本使用方法,包括安裝、啟動(dòng)、構(gòu)建鏡像和部署應(yīng)用等步驟2024-11-11
Docker Overlay2磁盤空間占用過大清理的方法實(shí)現(xiàn)
隨著業(yè)務(wù)量的不斷增大,容器的不斷啟動(dòng),往往會(huì)出現(xiàn)磁盤空間不足,本文主要介紹了Docker Overlay2磁盤空間占用過大清理的方法實(shí)現(xiàn),感興趣的可以了解一下2022-03-03

