Docker上運行SpringBoot項目(詳細)。(window10)


前言

  因為公司項目已經集成了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 (寫的很詳細)

 


免責聲明!

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



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