最近在淘寶上學習springcloud教程,其中有幾節課是講解講本地springboot服務打包成鏡像並推送到雲服務器私有倉庫,可是教程裏面用的事Mac環境,個人是Windows環境,並且課程裏面沒有講解docker本地打包所須要的必備環境,最後我是利用三個晚上終於解決了這個問題,故寫此文章總結一下,有寫的不對的地方,請多包涵java
先創建一個spring boot 服務,這個服務比較簡單,我也是根據教程上面創建的,使用的事idea工具web
new 一個projectspring
下一步,取名docker-demodocker
下一步,選擇web組件就能夠了shell
下一步,選擇本身對應的工程目錄apache
點擊完成,在新窗口中打開docker-demo工程,這就是一個最基本springboot應用windows
咱們在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文件裏配置以下springboot
<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登陸阿里雲服務器,進行拉取剛剛推送的鏡像
而後進行啓動鏡像
在瀏覽器查看
跟咱們本地的服務如出一轍
注意:若是服務正常啓動,可是就是訪問不了,那應該是網絡安全組沒有配置,也就是防火牆,需手動開放對應的端口號