1. 程式人生 > >從零開始通過idea外掛將一個spring boot專案部署到docker容器裡執行

從零開始通過idea外掛將一個spring boot專案部署到docker容器裡執行

實操:將一個spring boot專案部署到docker容器裡執行

實驗需要的環境:

騰訊雲+Ubuntu 16.04 x64+idea+外掛docker integration+daocloud

第一步,安裝作業系統

首先在騰訊雲上安裝一個乾淨的Ubuntu系統
系統使用Ubuntu 16.04 64位
這裡服務市場雖然有docker,但是版本都太低(1.8.2左右),現在的一些映象都不支援這些低版本的了,所以自己手動裝個
這裡寫圖片描述
騰訊雲推薦使用ssh連線,配置好後就不用輸入登入密碼了
這裡寫圖片描述
祕鑰可以在騰訊雲上建立,也可以在Xshell上建立
建立好金鑰之後,騰訊雲會給你一個私鑰下載,這個應該儲存好
然後找到金鑰,繫結到主機
這裡寫圖片描述


然後在xshell裡面建立ssh連線,把使用者祕鑰配置上去,就是騰訊雲發給你的私鑰
這裡寫圖片描述
然後成功連線上
這裡寫圖片描述

第二步,搭建docker環境

由於網路的原因。。。推薦在DaoCloud裡安裝docker,國內映象快

首先安裝docker:
登入到daocloud
這裡可以使用一鍵指令碼,方便快捷
下載地址,按照它的說明安裝
https://download.daocloud.io/Docker_Mirror/Docker
這裡寫圖片描述
我使用了這個指令碼安裝docker
這裡可能會卡在-qq這個地方,這是網路的原因,因為是外鏈。。ctrl+c,在執行,多試多等待就可以了
然後執行指令碼
這裡寫圖片描述


安裝完成後,提示如果想用非root使用者使用docker,應該將其加入docker組裡面
這裡寫圖片描述
把普通使用者加入組後,檢視docker版本,發現安裝的是最新的版本,有點高。都18去了

然後配置映象加速器(不然pull映象會很慢)
也是使用的daocloud
地址:
http://www.daocloud.io/mirror#accelerator-doc
這裡寫圖片描述
這裡當時遇到了一個坑,由於使用的是騰訊雲服務市場裡的映象(偷了裝docker的懶),然後由於版本太低,它這個指令碼是無法正常執行的,它好像需要1.12版本以上吧。。

然後愉快的pull images了,這裡run了一個rancher(docker編排用的,圖形化介面,方便管理)
這裡提供一個rancher的中文文件,有興趣研究研究:

http://rancher.com/docs/rancher/v1.6/zh/
這裡寫圖片描述
發現pull的很快
需要注意docker的版本,不然安裝rancher會出問題,這點文件裡寫的很清楚
這裡寫圖片描述
成功運行了rancher,當然,現在什麼都還沒配置,但是說明docker是安裝好了的
這裡寫圖片描述

第三步,給docker開啟遠端訪問

參考一份網上的資料
這裡寫圖片描述
這裡我把埠設定為了2375
這裡寫圖片描述
然後儲存檔案,重啟服務即可

需要注意的是,如果在centOS7上搭建的docker,這個遠端連線應該這樣配置

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

這裡寫圖片描述
檢視網路連線,發現2375埠已經被開啟
如果發現還是遠端連不上,可以設定一些騰訊雲的安全策略和防火牆

至此,在Ubuntu上搭建docker環境完成!

附:

由於我係統是win7的,所以也來試試安裝docker,其實docker對win7的支援並不好(都是以虛擬機器的形式執行的),推薦win10的系統

關於win7的安裝
首先下載Docker Toolbox

還是在daoyun下載的
然後執行這個安裝上去
這裡寫圖片描述
這裡也有個坑,需要注意virtualbox要5版本以上的,以往安裝過ensp,有個4版本的virtualbox,所以當時沒選virtualbox,所以會出問題
這裡寫圖片描述
安裝完成!
如果點選這個會提示找不到bash,在屬性裡把自己的bash設定上去即可
這裡寫圖片描述
更改c盤檔案的路徑
執行起來,發現它的虛擬機器預設位置在c盤
這裡寫圖片描述
隨著pull的image越來越多,c盤空間越來越少,所以我把虛擬機器磁碟檔案移動到了e盤
在管理裡面,找到虛擬介質管理器,選擇move,移動到其他盤上
這裡不要直接檔案操作,把disk.vmdk檔案移動到其他盤,然後在匯入,這樣會報錯,說uuid衝突的
這裡寫圖片描述
然後配置映象源
在我的文件裡找到config.json
這裡寫圖片描述
這裡寫圖片描述
然後配置images源
這裡寫圖片描述
成功執行docker!

第四步,在IDEA上安裝docker外掛

在setting裡找到這個外掛,安裝上去
這裡寫圖片描述
成功安裝外掛

這裡寫圖片描述
點選+,新增一個docker伺服器連線

需要注意的是win7的地址輸入,是https,並且是2376埠!這點官方文件有寫到
這裡寫圖片描述
要輸入相應的ip
這裡寫圖片描述
win7的配置!!!
這樣子就可以啦
同理,雲伺服器的,tcp連線,2375埠
這裡寫圖片描述
連線成功
這裡寫圖片描述

第五步,在IDEA上操作docker

這裡我準備把一個小實驗放進docker容器跑

先寫一個dockerFile
這裡寫圖片描述
這裡注意到add寫的是相對路徑,所以jar包要在docker目錄下,不然build映象的時候會找不到檔案
為了方便,乾脆直接把dockerfile檔案放在專案根目錄裡,然後寫絕對路徑找到打包好的jar包

這裡寫圖片描述
這裡寫圖片描述
這裡給了一個前置任務,先打包為jar包,再構建image

配置好就可以run了
這裡寫圖片描述
執行方式選擇docker
這裡寫圖片描述
構建映象中,由於是雲伺服器,這裡上傳映象需要一段時間,還是蠻快的
構建成功
通過docker ps命令可以看到當前上傳上去的映象已經被執行
這裡寫圖片描述

成功訪問雲伺服器!
這裡寫圖片描述
Spring boot專案已經執行在docker上了!

補充:
docker外掛更新之後更加方便部署了
選擇dockerfile
這裡寫圖片描述
給run built image打鉤,然後繫結上埠,還可以預覽命令列
這裡寫圖片描述
這樣配置好了之後,直接點idea的run,完成後雲伺服器就自動執行這個spring boot應用了

附:

Spring boot專案打包成docker image

沒有這款外掛也不要緊
使用一個mvn plugin,可以構建docker image,前提是要安裝docker環境

<plugin>
   <groupId>com.spotify</groupId>
   <artifactId>docker-maven-plugin</artifactId>
   <version>0.4.13</version>
   <configuration>
      <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
      <dockerDirectory>src/main/docker</dockerDirectory>

      <!-- 解決win7 Connect to localhost:2375的問題的其中一種方式,注意要跟docker-machine env相一致 -->
      <dockerHost>https://192.168.99.100:2376</dockerHost>
      <dockerCertPath>C:\Users\admin\.docker\machine\machines\default</dockerCertPath>

      <resources>
         <resource>
            <targetPath>/</targetPath>
            <directory>${project.build.directory}</directory>
            <include>${project.build.finalName}.jar</include>
         </resource>
      </resources>
   </configuration>
</plugin>

在win7環境下的配置,需要指定ip(因為是虛擬機器)
雲伺服器類似
這裡寫圖片描述
執行maven命令
這裡寫圖片描述
這裡寫圖片描述
原理差不多,也是使用了一個外掛,在package打包成jar包後,使用docker的mvn外掛構建一個映象