javascript
Jenkins 设置镜像_我常用的SpringBoot+Jenkins自动化部署技巧,贼好用,推荐给大家...
半自動化部署
之前寫過的SpringBoot應(yīng)用打包Docker鏡像都是通過Maven插件來實現(xiàn)的,由于遠(yuǎn)程服務(wù)器需要開發(fā)2375端口,存在一定的安全隱患。這次介紹另一種方法,使用DockerFile+Jar+自動化腳本的形式來部署。由于需要一定的手動操作,我把它稱之為半自動化部署。項目打包
- 這次我們不使用Docker的Maven插件來打包,先在pom.xml中注釋掉它;
- 然后使用Maven的package命令直接將應(yīng)用打成Jar包;
- 此時在target目錄下就會生成一個Jar包,我們打包Docker鏡像的時候會用到它。
DockerFile
主要是定義了如何將Jar包打包成Docker鏡像,具體內(nèi)容如下。
# 該鏡像需要依賴的基礎(chǔ)鏡像 FROM java:8 # 將當(dāng)前目錄下的jar包復(fù)制到docker容器的/目錄下 ADD mall-tiny-jenkins-1.0-SNAPSHOT.jar /mall-tiny-jenkins-1.0-SNAPSHOT.jar # 聲明服務(wù)運行在8088端口 EXPOSE 8088 # 指定docker容器啟動時運行jar包 ENTRYPOINT ["java", "-jar","/mall-tiny-jenkins-1.0-SNAPSHOT.jar"] # 指定維護者的名字 MAINTAINER macro自動化腳本
可以作為通用腳本來使用的模板腳本,只需改變其中的一些參數(shù)即可,具體執(zhí)行流程為:停止舊服務(wù)->刪除舊容器->刪除舊鏡像->打包新鏡像->運行新鏡像。
#!/usr/bin/env bash # 定義應(yīng)用組名 group_name='mall-tiny' # 定義應(yīng)用名稱 app_name='mall-tiny-jenkins' # 定義應(yīng)用版本 app_version='1.0-SNAPSHOT' # 定義應(yīng)用環(huán)境 profile_active='qa' echo '----copy jar----' docker stop ${app_name} echo '----stop container----' docker rm ${app_name} echo '----rm container----' docker rmi ${group_name}/${app_name}:${app_version} echo '----rm image----' # 打包編譯docker鏡像 docker build -t ${group_name}/${app_name}:${app_version} . echo '----build image----' docker run -p 8088:8088 --name ${app_name} --link mysql:db -e 'spring.profiles.active'=${profile_active} -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime -v /mydata/app/${app_name}/logs:/var/logs -d ${group_name}/${app_name}:${app_version} echo '----start container----'下面講下自動化腳本里面值得注意的地方:
- group_name、app_name、app_version可以用來定義打包鏡像的屬性;
- profile_active可以讓你的應(yīng)用使用不同環(huán)境下的配置,比如使用qa可以啟用測試環(huán)境的配置,使用prod可以啟用生產(chǎn)環(huán)境配置,真正的一包多用;
- docker rmi這步一定要有,如果不刪除舊鏡像,當(dāng)新鏡像打包的時候會產(chǎn)生none鏡像;
- docker run命令中的-e TZ="Asia/Shanghai"時區(qū)一定要設(shè)置,否則容器時間會和宿主機會相差8個小時。
部署運行
- 直接上傳我們的應(yīng)用Jar包、DockerFile文件和自動化部署腳本到指定目錄下;
- 將自動化腳本修改為可執(zhí)行;
- 使用./run.sh命令直接運行腳本即可。
結(jié)合Jenkins自動化部署
之前的打包、上傳文件都是我們手動完成的,其實這些操作也可以讓Jenkins來幫我們實現(xiàn),有了Jenkins才算得上是真正的自動化部署!Publish Over SSH
這里推薦安裝這款Jenkins插件,它的主要作用是可以通過SSH在不同服務(wù)器之間傳輸文件和執(zhí)行命令。比如說我們把Jenkins裝在了測試服務(wù)器上,我們可以使用Jenkins在測試服務(wù)器上從Git倉庫獲取代碼,然后打成Jar包。打包完成后我們可以通過這個插件將Jar包傳輸?shù)秸椒?wù)器上去,然后執(zhí)行正式服務(wù)器上的自動化腳本,從而實現(xiàn)正式服務(wù)器上的自動化部署。
- 首先我們可以在系統(tǒng)管理->插件管理中找到該插件,然后進行安裝;
- 然后在系統(tǒng)管理->插件管理中添加相應(yīng)的SSH配置;
- 配置完成后創(chuàng)建一個應(yīng)用的構(gòu)建任務(wù),源碼管理和構(gòu)建中的Maven打包配置和之前的Jenkins教程中一樣,只有最后一步不同,添加構(gòu)建步驟為通過SSH發(fā)送文件并執(zhí)行命令;
- 配置好我們的SSH Publisher,主要是源文件路徑和目標(biāo)文件路徑,以及需要執(zhí)行的腳本;
- 之后執(zhí)行構(gòu)建任務(wù)即可實現(xiàn)自動化部署了,此方法在兩臺不同服務(wù)器之間同樣適用!
項目源碼地址
項目源碼:https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-jenkins總結(jié)
從我寫過的幾篇自動化部署文章中,其實可以看出,令來實現(xiàn)的。Jenkins的自動化部署也是基于這些的,所以要學(xué)會自動化部署,Linux命令和Docker命令是必不可少的!
如果大家喜歡我們的文章,歡迎大家轉(zhuǎn)發(fā),點擊在看讓更多的人看到。也歡迎大家熱愛技術(shù)和學(xué)習(xí)的朋友加入的我們的知識星球當(dāng)中,我們共同成長,進步。
總結(jié)
以上是生活随笔為你收集整理的Jenkins 设置镜像_我常用的SpringBoot+Jenkins自动化部署技巧,贼好用,推荐给大家...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联想按f2进不了bios设置_华硕笔记本
- 下一篇: mysql 建表_别再胡乱建表了,看看阿