Jenkins+docker+git+Gitee 部署SpringBoot項目

開發(fā)離不開項目的部署二驰,運維每强,因此為了以后的開發(fā)便利,我最近學(xué)習(xí)了下服務(wù)的自運維娇掏,現(xiàn)在總結(jié)一下
參考:https://my.oschina.net/yimingkeji/blog/2878371

技術(shù)

Jenkins+docker+git+Gitee 部署SpringBoot項目

環(huán)境

  • Win10
  • 虛擬機:VMware
  • 系統(tǒng):centos7

操作流程

1.安裝虛擬機呕寝,配置centos系統(tǒng),聯(lián)通網(wǎng)絡(luò)

2.配置Java環(huán)境

3.下載婴梧,安裝下梢,配置jenkins

1)Jenkins的介紹
Jenkins是一個廣泛用于持續(xù)構(gòu)建的可視化web工具,可用于自動化與構(gòu)建塞蹭、測試孽江、交付或部署軟件相關(guān)的各種任務(wù)。
2)看下Jenkins的工作流程

  1. 我們在本地開發(fā)項目番电。記得加上dcoker的依賴和Dockerfile的配置(后面說)竟坛。然后通過本地git提交到碼云(Github)。
  2. 這時碼云上的項目中配置鉤子程序(Webhooks)钧舌。當(dāng)我們在本地push的時候觸發(fā)鉤子。
    這個URL的地址要觸發(fā)Jenkis(后面介紹)
image.png

image.png
  1. Jenkins接收到通知以后涎跨,會調(diào)用虛擬機上的git洼冻。將遠(yuǎn)程碼云倉庫的項目pull到服務(wù)器上
  2. 接下來的工作中心就在Jenkins上。根據(jù)配置(后面詳細(xì)說)隅很,將項目用服務(wù)器上mvn打成jar包
  3. 利用docker結(jié)合項目的dockerfile撞牢,打包成docker鏡像,然后啟動即可叔营。(具體配置看后面)

3)Jenkins的下載和安裝
看參考即可

不同的是我沒有安裝到tomcat下面屋彪,隨tomcat啟動,而是直接安裝linux中绒尊,然后設(shè)置啟動
這可以百度下

4.配置docker

  1. 首先是插件的安裝畜挥,可以看參考,會遇到無法連接到外網(wǎng)服務(wù)器的問題婴谱,百度解決即可
  2. 進(jìn)去后蟹但,首先全局配置,-》看參考 配置maven谭羔、JDK华糖、Docker、git

這些都需要安裝到服務(wù)器上瘟裸,git還需生成私鑰客叉,公鑰。公鑰放到碼云遠(yuǎn)程倉庫,私鑰放到Jenkins上兼搏,使得通過Jenkin利用git將代碼拉到服務(wù)器上卵慰。

  1. 安裝docker
  2. Springboot項目
    項目地址:https://gitee.com/yimingkeji/docker-springboot

docker依賴

<!-- Docker maven plugin start -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.13</version>
                <configuration>
                    <imageName>${project.artifactId}</imageName><!--[a-z 0-9] 不然docker:build會報錯-->
                    <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
                                                      <!--dockerfile的地址-->
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
            <!-- Docker maven plugin end -->

Dockerfile內(nèi)容:
FROM hub.c.163.com/dwyane/openjdk:8
VOLUME /tmp
ADD docker-test-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE 8081

dockerfile的jar包的名字要和項目的名字保持一致

<groupId>com.wuhen</groupId>
    <artifactId>docker-test</artifactId>
    <version>0.0.1-SNAPSHOT</version>

然后上傳到自己的碼云遠(yuǎn)程倉庫

5.使用Jenkins部署項目到docker

看參考
其中
第一次執(zhí)行shell 添加shell:

#!/bin/bash -il
mvn docker:build
echo "當(dāng)前docker 鏡像:"
docker images | grep docker-test
echo "啟動容器----->"
docker run --name dockertest -p 8081:8081 -d docker-test
echo "啟動服務(wù)成功!"

項目構(gòu)建成功后再次構(gòu)建shell有所改變

#!/bin/bash -il
# 先刪除之前的容器
echo "remobe old container"
docker ps -a | grep dockertest | awk '{print $1}'| xargs docker rm -f
# 刪除之前的鏡像
echo "romove old image"
docker rmi docker-test
# 構(gòu)建鏡像
mvn docker:build
# 打印當(dāng)前鏡像
echo "current docker images"
docker images | grep docker-test
# 啟動容器
echo "start container"
docker run --name dockertest -p 8081:8081 -d docker-test
# 打印當(dāng)前容器
echo "current container"
docker ps -a | grep dockertest
echo "star service success!"

這個容器端口映射:項目的啟動端口好為8081向族,映射到外部服務(wù)器端口為8081(可以固定呵燕。也可以隨機),所以在外部瀏覽器訪問IP:8081,即映射到項目上件相,添加路徑即可訪問

控制臺輸出

Started by user unknown or anonymous
Running as SYSTEM
Building in workspace /var/lib/jenkins/workspace/docker-test
 > /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > /usr/bin/git config remote.origin.url git@gitee.com:zhege/docker-test.git # timeout=10
Fetching upstream changes from git@gitee.com:zhege/docker-test.git
 > /usr/bin/git --version # timeout=10
using GIT_SSH to set credentials gitee
 > /usr/bin/git fetch --tags --progress git@gitee.com:zhege/docker-test.git +refs/heads/*:refs/remotes/origin/*
 > /usr/bin/git rev-parse refs/remotes/origin/master^{commit} # timeout=10
 > /usr/bin/git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision 8b9c5e5cdda5cf060be846f2c53b9662cd8d1c7f (refs/remotes/origin/master)
 > /usr/bin/git config core.sparsecheckout # timeout=10
 > /usr/bin/git checkout -f 8b9c5e5cdda5cf060be846f2c53b9662cd8d1c7f
Commit message: "測試0.8"
 > /usr/bin/git rev-list --no-walk 8b9c5e5cdda5cf060be846f2c53b9662cd8d1c7f # timeout=10
[docker-test] $ /usr/local/maven/apache-maven/bin/mvn -s /usr/local/maven/apache-maven/conf/settings.xml -gs /usr/local/maven/apache-maven/conf/settings.xml clean install -Dmaven.test.skip=true
[INFO] Scanning for projects...
[INFO] 
[INFO] -----------------------< com.wuhen:docker-test >------------------------
[INFO] Building docker-test 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ docker-test ---
[INFO] Deleting /var/lib/jenkins/workspace/docker-test/target
[INFO] 
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ docker-test ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ docker-test ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to /var/lib/jenkins/workspace/docker-test/target/classes
[INFO] 
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ docker-test ---
[INFO] Not copying test resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ docker-test ---
[INFO] Not compiling test sources
[INFO] 
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ docker-test ---
[INFO] Tests are skipped.
[INFO] 
[INFO] --- maven-jar-plugin:3.1.2:jar (default-jar) @ docker-test ---
[INFO] Building jar: /var/lib/jenkins/workspace/docker-test/target/docker-test-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- spring-boot-maven-plugin:2.2.1.RELEASE:repackage (repackage) @ docker-test ---
[INFO] Replacing main artifact with repackaged archive
[INFO] 
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ docker-test ---
[INFO] Installing /var/lib/jenkins/workspace/docker-test/target/docker-test-0.0.1-SNAPSHOT.jar to /root/.m2/repository/com/wuhen/docker-test/0.0.1-SNAPSHOT/docker-test-0.0.1-SNAPSHOT.jar
[INFO] Installing /var/lib/jenkins/workspace/docker-test/pom.xml to /root/.m2/repository/com/wuhen/docker-test/0.0.1-SNAPSHOT/docker-test-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.245 s
[INFO] Finished at: 2019-11-19T15:24:43+08:00
[INFO] ------------------------------------------------------------------------
[docker-test] $ /bin/bash -il /tmp/jenkins6420905348235517809.sh
bash: no job control in this shell
remobe old container
8ecc1c0ad528
romove old image
Untagged: docker-test:latest
Deleted: sha256:e21b5d37eec2178a134b2b11ff2c520c9e4195da30514fdf3a9c908c7d1923bc
Deleted: sha256:f6687ce9698053b270d31032bba9953d1df257038b356827161a7ef6b3a0d6fa
Deleted: sha256:1770755bad3191affc457705afe435cd5d21a60fadd543a67b4df65de66a5cf7
Deleted: sha256:0a45f6912e8188a2ef73537590483f7284f12856aab29263bb03f9a41f5d86e8
Deleted: sha256:046c6fab78820fb8d39f3c502a882a71841fdbc23ecb18f39bd712e7e9d556bd
[INFO] Scanning for projects...
[INFO] 
[INFO] -----------------------< com.wuhen:docker-test >------------------------
[INFO] Building docker-test 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- docker-maven-plugin:0.4.13:build (default-cli) @ docker-test ---
[INFO] Copying /var/lib/jenkins/workspace/docker-test/target/docker-test-0.0.1-SNAPSHOT.jar -> /var/lib/jenkins/workspace/docker-test/target/docker/docker-test-0.0.1-SNAPSHOT.jar
[INFO] Copying /var/lib/jenkins/workspace/docker-test/src/main/docker/Dockerfile -> /var/lib/jenkins/workspace/docker-test/target/docker/Dockerfile
[INFO] Building image docker-test
Step 1/5 : FROM hub.c.163.com/dwyane/openjdk:8

 ---> 96cddf5ae9f1
Step 2/5 : VOLUME /tmp

 ---> Running in 486c1231762b
Removing intermediate container 486c1231762b
 ---> 13ba15843faa
Step 3/5 : ADD docker-test-0.0.1-SNAPSHOT.jar app.jar

 ---> 728f47311940
Step 4/5 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

 ---> Running in 5e60e14f90b9
Removing intermediate container 5e60e14f90b9
 ---> fb9135e0b8d3
Step 5/5 : EXPOSE 8081

 ---> Running in b37736b77608
Removing intermediate container b37736b77608
 ---> b245fecbacc9
ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null}
Successfully built b245fecbacc9
Successfully tagged docker-test:latest
[INFO] Built docker-test
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.657 s
[INFO] Finished at: 2019-11-19T15:24:50+08:00
[INFO] ------------------------------------------------------------------------
current docker images
docker-test                    latest              b245fecbacc9        Less than a second ago   658MB
start container
6a5195061803f56761fbb4289c6a6035fd3f91afd1057d9c8051cb69c7ef4a75
current container
6a5195061803        docker-test         "java -Djava.securit…"   1 second ago        Up Less than a second      0.0.0.0:8081->8081/tcp              dockertest
star service success!
Finished: SUCCESS

可以結(jié)合參考和我的文章選擇自己合適的配置路線再扭,與其說是寫總結(jié),也是結(jié)合自己弟參考文章的補充

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末夜矗,一起剝皮案震驚了整個濱河市泛范,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌紊撕,老刑警劉巖罢荡,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異对扶,居然都是意外死亡区赵,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門浪南,熙熙樓的掌柜王于貴愁眉苦臉地迎上來笼才,“玉大人,你說我怎么就攤上這事络凿÷馑停” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵絮记,是天一觀的道長摔踱。 經(jīng)常有香客問我,道長怨愤,這世上最難降的妖魔是什么派敷? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮撰洗,結(jié)果婚禮上膀息,老公的妹妹穿的比我還像新娘。我一直安慰自己了赵,他們只是感情好潜支,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著柿汛,像睡著了一般冗酿。 火紅的嫁衣襯著肌膚如雪埠对。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天裁替,我揣著相機與錄音项玛,去河邊找鬼。 笑死弱判,一個胖子當(dāng)著我的面吹牛襟沮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播昌腰,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼开伏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了遭商?” 一聲冷哼從身側(cè)響起固灵,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎劫流,沒想到半個月后巫玻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡祠汇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年仍秤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片可很。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡诗力,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出根穷,到底是詐尸還是另有隱情,我是刑警寧澤导坟,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布屿良,位于F島的核電站,受9級特大地震影響惫周,放射性物質(zhì)發(fā)生泄漏尘惧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一递递、第九天 我趴在偏房一處隱蔽的房頂上張望喷橙。 院中可真熱鬧,春花似錦登舞、人聲如沸贰逾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疙剑。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間言缤,已是汗流浹背嚼蚀。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留管挟,地道東北人轿曙。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像僻孝,于是被迫代替她去往敵國和親导帝。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容