從零開始通過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的中文文件,有興趣研究研究:
發現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外掛構建一個映象