前言
因為公司項目已經集成了Docker,自動就運行在Docker上了,對Docker的了解僅限於:它是一個鏡像庫,可以將任何應用打包成鏡像並運行上Docker上,好處就是應用在任何平台上(window, linux)都是一樣的,換一個平台也不用重新部署,直接拉取鏡像跑起來就完事了。。突發想法,一個普通的springboot項目如何部署在dokcer上呢(小小的腦袋,大大的疑惑....),於是 百度輸入了自己的問題,發現都是在linux上部署的,暫時也沒那個條件,只能在window環境整整了。
正文
第一步:docker的安裝
https://blog.csdn.net/go_d_og/article/details/75675159 (win10安裝docker教程,轉載)
注:window虛擬化一定要開啟,不然docker啟動不了。

第二步:啟動Docker
如下圖代表Docker啟動好了。

第三步:配置國內鏡像加速器
DaoCloud加速器為例:https://www.daocloud.io/mirror
1 注冊后並登錄,右上角的 “小火箭” 按鈕點擊一下。

2 會跳轉到:https://www.daocloud.io/mirror 頁面,鼠標往下拉,拉到最下面找到window地址

3 復制地址至 Docker -> setting 配置頁面 (我下面的圖已經保存過了,記得apply..)

此時Docker會自動重啟,重啟好了在進行下一步。
第四步:創建一個Spring Boot應用
用idea 能快速創建,這個就省略了... 推薦:https://www.cnblogs.com/little-rain/p/11063967.html
隨便寫一個接口,能證明Spring Boot 應用跑起來的頁面。

上面都是准備工作,下面才是Spring Boot 中集成Docker。
第五步:Spring Boot 中集成Docker
1 Pom.xml添加Docker支持
<properties> <docker.image.prefix>springboot</docker.image.prefix> </properties>
2 plugins 中添加 Docker 構建插件
<plugins>
<!-- docker配置 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- Docker maven plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<!-- Docker maven plugin -->
</plugins>
3 在目錄 src/main/docker 下創建 Dockerfile 文件,Dockerfile 文件用來說明如何來構建鏡像

FROM openjdk:8-jdk-alpine VOLUME /tmp ADD demo-0.0.1-SNAPSHOT.jar app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
這個 Dockerfile 文件很簡單,構建 Jdk 基礎環境,添加 Spring Boot Jar 到鏡像中,簡單解釋一下:
FROM ,表示使用 Jdk8 環境 為基礎鏡像,如果鏡像不是本地的會從 DockerHub 進行下載
VOLUME ,VOLUME 指向了一個 /tmp 的目錄,由於 Spring Boot 使用內置的Tomcat容器,Tomcat 默認使用 /tmp 作為工作目錄。這個命令的效果是:在宿主機的 /var/lib/docker 目錄下創建一個臨時文件並把它鏈接到容器中的 /tmp 目錄
ADD ,拷貝文件並且重命名
ENTRYPOINT ,為了縮短 Tomcat 的啟動時間,添加 java.security.egd 的系統屬性指向 /dev/urandom 作為 ENTRYPOINT
注意:上述的名字 demo-0.0.1-SNAPSHOT.jar 是我的項目打包后的名字
4 配置好之后啟動 看看項目能否啟動。如不能啟動 根據錯誤信息找原因...
5 停止應用,cmd切換到項目目錄。

6 檢查java , maven, Docker是否都安裝 且 環境變量無誤。



7 開始打包。如果這步報錯,自行搜索錯誤信息解決...

8 打包成功,會在target目錄生成jar。

9 將應用打包並上傳至鏡像倉庫。

10 使用Docker命令查看鏡像:docker images

11 運行鏡像: docker run -p 8080:8080 -t springboot/demo (我的應用的端口的8080)

12 用docker ps 查看正在運行的鏡像,發現已經安排上了。

13 測試一下接口 (沒毛病.)

參考了博客:https://blog.csdn.net/weixin_40804733/article/details/88710845 (寫的很詳細)
