從零開始通過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
  • 1

這里寫圖片描述 
查看網絡連接,發現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插件

Idea中可以下載docker插件,功能強大 
官方文檔 
https://www.jetbrains.com/help/idea/docker.html

在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> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM