DevOps實踐2:Spring Boot集成Docker環(huán)境

知之愈明,則行之愈篤喘沿;行之愈篤,則知之益明.——朱熹(宋)

我們在平常學習了很多的知識闸度,但是如果沒有深入去實踐,知識掌握就不會牢固蚜印,所以需要通過實踐來鞏固≥航現(xiàn)在大多數(shù)的業(yè)務都切換到了Spring Boot,更加復雜和龐大的業(yè)務則使用Spring Cloud窄赋,當然也有用Dubbo哟冬,所以準備在Spring Boot中集成Docker楼熄,進行服務化。

創(chuàng)建項目進行集成

創(chuàng)建一個Spring Boot 項目

項目
模塊

增加項目對Docker的支持

  1. 修改pom.xml配置浩峡,增加對應的插件可岂,可以使用Maven進行打包
#Docker 鏡像前綴,放在<properties> 標簽中
 <docker.image.prefix>devops</docker.image.prefix>
  1. 添加視圖模板支持
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
  1. 增加對應的maven 插件翰灾,插件有多種缕粹,這里采用 <groupId>com.spotify</groupId>
<build>
  <finalName>devops</finalName>  
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>  
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>  
    <!-- docker打包 -->  
    <plugin>
      <groupId>com.spotify</groupId>  
      <artifactId>docker-maven-plugin</artifactId>  
      <version>1.0.0</version>  
      <configuration>
        <serverId>docker-hosted</serverId>  
        <!-- docker倉庫地址,用于推送鏡像 -->  
        <registryUrl>${docker.repository}</registryUrl>
        <!-- 設置為false纸淮,避免自動推送鏡像 -->
        <pushImage>false</pushImage>  
        <!-- Dockerfile路徑 -->  
        <dockerDirectory>src/main/docker</dockerDirectory>  
        <!-- 構建的鏡像名稱 -->  
        <imageName>${docker.image.prefix}/${project.artifactId}</imageName>  
        <imageTags>
          <imageTag>latest</imageTag>
        </imageTags>  
        <resources>
          <resource>
            <targetPath>/</targetPath>  
            <directory>${project.build.directory}</directory>  
            <include>${project.build.finalName}.jar</include>
          </resource>
        </resources>
      </configuration>
    </plugin>
  </plugins>
</build>
  1. 修改Maven settings 文件配置(主要的目的是為了方便后面我們將自己的服務推送到自己的私服平斩,方便管理)
<pluginGroups>
  <pluginGroup>com.spotify</pluginGroup>
</pluginGroups>

#本地私服的配置
</profiles>
 <profile>    
   <id>nexus</id>    
   <properties>
   <docker.repository>http://192.168.100.77:8081/repository/docker</docker.repository>
   </properties>
 </profile>
</profiles>
#激活私服配置
<activeProfiles>    
  <activeProfile>nexus</activeProfile>    
</activeProfiles>

上面基本的pom配置就完成了,之后開始配置Docker相關的腳本

Docker腳本配置

在src/main 目錄下創(chuàng)建docker 文件夾咽块,剛剛上面的pom配置里聲明了Dockerfile的路徑
創(chuàng)建文件Dockerfile 绘面,注意文件沒有后綴,之后增加如下腳本

FROM java:8  #基本鏡像
VOLUME /tmp  #掛載文件位置糜芳,/tmp 為臨時目錄
ADD devops.jar app.jar  #添加對應的jar飒货,使用maven打包后會自動到target目錄找devops.jar 文件
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] # 程序啟動入口

打包、運行鏡像

創(chuàng)建對應的測試文件峭竣,打包

mvn clean package docker:build  # 一氣呵成O(∩_∩)O~~

在運行docker命令前塘辅,先確認電腦上的docker環(huán)境是否配置成

docker version
# 會有如下顯示
Client:
 Version:   17.12.0-ce
 API version:   1.35
 Go version:    go1.9.2
 Git commit:    c97c6d6
 Built: Wed Dec 27 20:03:51 2017
 OS/Arch:   darwin/amd64

Server:
 Engine:
  Version:  17.12.0-ce
  API version:  1.35 (minimum version 1.12)
  Go version:   go1.9.2
  Git commit:   c97c6d6
  Built:    Wed Dec 27 20:12:29 2017
  OS/Arch:  linux/amd64
  Experimental: true

上面說明Docker是正常啟動的

然后查看鏡像

docker images
鏡像

上圖說明我們的鏡像打包成功
然后運行一下雕蔽,檢查鏡像是否能夠正常啟動

#啟動鏡像 -d 表示后臺運行恐仑,-p 端口進行映射 --name docker服務名稱  devops/devops:latest 運行的鏡像
docker run -d  -p 8080:8080 --name devops devops/devops:latest
#執(zhí)行docker ps 查看鏡像是否運行
WX20180227-203815.png

如果铣缠,說明服務是正常啟動了童太,之后請求
http://localhost:8080/index?name=World

WX20180227-204116.png

能夠請求成功徙缴,說明鏡像部署成功

停止釋放鏡像

# 養(yǎng)成好習慣锐墙,停止釋放鏡像
docker stop 2026e45bc2ce
docker rm 2026e45bc2ce

代碼可在https://github.com/junhuali/devops-springboot 下載

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末专酗,一起剝皮案震驚了整個濱河市饰躲,隨后出現(xiàn)的幾起案子滥比,更是在濱河造成了極大的恐慌亚脆,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盲泛,死亡現(xiàn)場離奇詭異濒持,居然都是意外死亡,警方通過查閱死者的電腦和手機寺滚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門柑营,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人村视,你說我怎么就攤上這事官套。” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵奶赔,是天一觀的道長惋嚎。 經(jīng)常有香客問我,道長瘸彤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任质况,我火速辦了婚禮,結果婚禮上玻靡,老公的妹妹穿的比我還像新娘。我一直安慰自己囤捻,他們只是感情好,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布蝎土。 她就那樣靜靜地躺著,像睡著了一般誊涯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上暴构,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機與錄音取逾,去河邊找鬼耗绿。 笑死砾隅,一個胖子當著我的面吹牛误阻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播晴埂,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼究反,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了邑时?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤特姐,失蹤者是張志新(化名)和其女友劉穎晶丘,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡浅浮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年沫浆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滚秩。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡专执,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出郁油,到底是詐尸還是另有隱情本股,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布桐腌,位于F島的核電站拄显,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏案站。R本人自食惡果不足惜躬审,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蟆盐。 院中可真熱鬧承边,春花似錦、人聲如沸石挂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽誊稚。三九已至翔始,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間里伯,已是汗流浹背城瞎。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留疾瓮,地道東北人脖镀。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像狼电,于是被迫代替她去往敵國和親蜒灰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

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