最近在淘寶上學習springcloud教程,其中有幾節課是講解講本地springboot服務打包成鏡像並推送到雲服務器私有倉庫,但是教程里面用的事Mac環境,我的是Windows環境,而且課程里面沒有講解docker本地打包所需要的必備環境,最后我是利用三個晚上終於解決了這個問題,故寫此文章總結一下,有寫的不對的地方,請多包涵
先建立一個spring boot 服務,這個服務比較簡單,我也是根據教程上面建立的,使用的事idea工具
new 一個project
下一步,取名docker-demo
下一步,選擇web組件就可以了
下一步,選擇自己對應的工程目錄
點擊完成,在新窗口中打開docker-demo工程,這就是一個最基本springboot應用
我們在DockerDemoApplication添加如下代碼:
@RequestMapping("/user/find") @ResponseBody public Object findUser(){ Map<String,String> map = new HashMap<String,String>(); map.put("name","xdclass.net"); map.put("age","28"); return map; }
然后啟動服務,端口默認是8080,我們在瀏覽器輸入地址:localhost:8080/user/find
在pox文件里配置如下
<docker.image.prefix>xdclass</docker.image.prefix>
<!--項目打包的名稱--> <finalName>docker-demo</finalName>
<plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.3.6</version> <configuration> <repository>${docker.image.prefix}/${project.artifactId}</repository> <buildArgs> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> </plugin>
添加Dockerfile文件
Dockerfile文件里添加如下指令
FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"]
按照教程里面現在就開始打包鏡像,打開idea terminal窗口,輸入mvn install dockerfile:build
執行失敗,拋出了一個異常信息
Failed to execute goal com.spotify:dockerfile-maven-plugin:1.3.6:build (default-cli) on project docker-demo: Could not build image: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingExcep
tion: org.apache.http.conn.HttpHostConnectException: Connect to 192.168.99.100:2376 [/192.168.99.100] failed: Connection timed out: connect -> [Help 1]
經查詢,是本地沒有安裝docker環境,所以下面我們開始安裝本地docker環境
首先安裝idea docker插件
打開file->setting->Plugins,搜索docker,然后點擊search in respositories,如下圖
點擊安裝
我是提前下載好Docker-181.3007.4.zip包,本地安裝
然后重新啟動idea工具,再次打開file->setting
已經安裝成功了,而且Dockerfile中的指令已經有了顏色變化,如下所示
下面最關鍵的是下載DockerToolbox-18.03.0-ce.exe安裝包,並進行安裝(下載地址http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/)
雙擊開始安裝:咱們不勾選
下一步,選擇安裝目錄
下一步
下一步
下一步
安裝成功
安裝成功會出現下面三個圖標
雙擊打開Oracle VM VirtualBox
然后再雙擊Docker Quickstart Terminal,打開之后會自動安裝默認虛擬機,會有幾分鍾等待時間
出現這個畫面,說明已經安裝默認虛擬機已經安裝成功,我們可以看下Oracle VM VirtualBox
已經有一個正在運行的默認虛擬機了,到這一步基本上安裝完成,我們在執行一下mvn install dockerfile:build
看到沒有,已經在執行Dockerfile中的指令了,但是非常的慢,因為我們本地沒有進行鏡像加速,所以我們給本地docker配置鏡像加速
參照:https://blog.csdn.net/slibra_L/article/details/77505003
第一步:
在https://www.daocloud.io/mirror進行注冊登錄
然后點擊如下圖標:
跳轉到下一個頁面,拉到最下面
復制http://f1361db2.m.daocloud.io然后找個文本先備份一下
然后雙擊打開
點擊DOCKER CU,會出現下面的彈出框
然后分別執行如下指令
docker-machine ssh default
sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=http://f1361db2.m.daocloud.io |g" /var/lib/boot2docker/profile
exit
標紅的地址就是剛剛備份的地址
然后默認虛擬機和docker重啟動就ok了,我們再試一下mvn install dockerfile:build
很快就執行完成了
然后我們在Docker Quickstart Terminal,輸入docker images 進行查看鏡像
說明已經打包鏡像成功了
接下來,我們將本地的鏡像推送到阿里雲鏡像倉庫(需自己購買阿里雲服務器,然后開通個人鏡像倉庫,也可以使用其他的雲服務器,比如騰訊雲),打開阿里個人鏡像倉庫
點擊管理
這里給出鏡像推送的三個步驟:登錄阿里雲服務器、給本地鏡像打一個標簽、推送
推送成功,打標簽的時候,一定要選擇自己本地的鏡像id
然后查看一下阿里雲服務器的鏡像倉庫,如圖所示
然后,用xshell登錄阿里雲服務器,進行拉取剛剛推送的鏡像
然后進行啟動鏡像
在瀏覽器查看
跟我們本地的服務一模一樣
注意:如果服務正常啟動,但是就是訪問不了,那應該是網絡安全組沒有配置,也就是防火牆,需手動開放對應的端口號