Docker 一次構建、處處運行及快速啟停的特性,在微服務架構中有著舉足輕重的地位,具體的概念性的東西就不介紹了礎教程。
本篇主要介紹下如何通過 IntelliJ IDEA、Maven 來操作 Docker 部署 Spring Boot 項目,這也是我們 Java 程序員最關心的開發實戰。
首先在 Maven pom.xml 配置文件中加入 Docker 的 Maven 插件。
在配置文件pom.xml的build模塊中添加docker-maven-plugin 插件配置:
<build> <!--打包名稱--> <finalName>springboot-hertzbeat</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.4.13</version> <!--下面這段代表執行package就build項目中的Dockerfile--> <executions> <execution> <id>default</id> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <!--下面這段代表產出的內容--> <configuration> <repository>itlaoqi/${project.artifactId}</repository> <tag>${project.version}</tag> <buildArgs> <JAR_FILE>${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> </plugin> </plugins> </build>
此插件的環境要求:
圖片
Dockerfile 是創建 Docker 鏡像的基本配置文件,本身是一個文本文件。
插件默認加載位置為項目所在根目錄,因為我在上面的 Maven 插件配置中指明了路徑。所以,在 項目的根 目錄下添加一個 Dockerfile 文件:
圖片
其中,AGR JAR_FILE對應了pom.xml文件中的${project.build.finalName}.jar,也就是生成的jar包名字。
# 基礎鏡像FROM openjdk:8-jre# 指定路徑ARG JAR_FILE# 復制jar文件到路徑COPY /target/${JAR_FILE} /app.jar# 啟動認證服務ENTRYPOINT ["java","-jar","-Duser.timeznotallow=GMT+08","app.jar"]EXPOSE 9682
圖片
配置了 Maven 插件和 Dockerfile 文件后就可以開始構建 Docker 鏡像了。
上面也說了,Docker 構建過程已經集成到了 Maven 的構建過程之中,那么可以直接使用 mvn package
就可以同時打包和構建 Docker 鏡像了。
因為我電腦不想安裝docker,于是將代碼上傳到了gitlab,然后在服務器上通過git clone拉取了代碼。
圖片
此時執行命令:mvn package -DskipTests,等待片刻使用docker images命令查看就會發現已經構建好了一個新的鏡像itlaoqi/springboot-hertzbeat。
一旦我們創建了 Dockerfile 文件,IDEA 就會自動識別并提示我們創建 Docker 連接,當然,我們也可以調出 Services 面板進行手動創建。
打開 IDEA 中的 Services 面板:
圖片
創建完后會自動連接上,點擊展開會顯示 Docker 遠程(本地)所有鏡像和容器:
圖片
如上圖所示,就是我們剛構建的鏡像。
右擊上面的鏡像,選擇 "Create Container" 菜單來創建并運行一個容器。
圖片
注意:綁定端口這里不要寫主機,如果啟動不起來,具體錯誤可以查看預覽命令
圖片
項目在 Docker 中運行起來了,
圖片
然后再訪問下上面寫的測試接口:
http://xxxxx:9682/hello
圖片
本文鏈接:http://www.www897cc.com/showinfo-26-87019-0.html用Docker-Maven-Plugin構建SpringBoot鏡像,帶勁!
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 自動化測試在 Kubernetes Operator 開發中的應用:以 OpenTelemetry
下一篇: C# 中獲取客戶端 IP 地址的技術探討