[轉載]?daoCould文檔
在 Docker 中使用 Java Spring Boot 框架
在 Docker 中使用 Java Spring Boot 框架
目標:用 Docker 的方式搭建一個 Java Spring Boot 應用
本項目代碼維護在DaoCloud/docker-demo-spring-boot項目中。
您可以在 GitHub 找到本項目并獲取本文中所提到的所有代碼文件。
Java 一直是企業應用開發的大頭,在互聯網時代,在云計算、大數據的推動下,Java 又煥發了新生。
Spring Framework 是 Java 應用開發中應用最廣泛的框架,基于 AOP 及 IOC 的思想,讓它能與任何 Java 第三方框架進行非常便利的集成。
Spring Boot 是由 Pivotal 團隊提供的全新框架,其設計目的是用來簡化新 Spring 應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,Spring Boot 致力于在蓬勃發展的快速應用開發領域(Rapid application development)成為領導者。
Maven 自從公布以來,在 Java 應用構建和管理中一直處于最重要的地位,基于 Project Object Model 的概念管理項目。
鏡像是 Docker 應用的靜態表示,是應用的交付件,鏡像中包含了應用運行所需的所有依賴:包括應用代碼、應用依賴庫、應用運行時和操作系統。
Dockerfile 是一個描述文件,描述了產生 Docker 鏡像的過程。詳細文檔請參見Dockerfile文檔
容器是鏡像運行時的動態表示,如果把鏡像想象為一個 Class 那么容器就是這個 Class 的 instance 實例。
一個應用 Docker 化的第一步就是通過 Dockerfile 產生應用鏡像。
訪問http://start.spring.io站點,根據需要建立自己的應用。
在整個 Java 教程中,我們將基于 Spring Boot 開發一個 RESTful API 應用,使用 MongoDB 來持久化我們的數據,項目使用 Maven 構建。
現在,我們先建立一個 RESTful API 應用。
所以,我們在 Dependencies 中填寫 Web ,然后點擊 Generate Project 按鈕,將會下載回來一個基于 Maven 的項目模板。
編輯src/main/java/io/daocloud/demo/DockerDemoSpringBootApplication.java文件,添加一個方法,加上@RequestMapping注解,并添加類注解@RestController。
@RestControllerpublicclassDockerDemoSpringBootApplication{publicstaticvoidmain(String[] args){? ? ? ? SpringApplication.run(DockerDemoSpringBootApplication.class, args);? ? }@RequestMapping("")publicStringhello(){return"Hello! Docker!";? ? }}
在應用根目錄下建立 Dockerfile 文件,內容如下:
FROM maven:3.3.3ADD pom.xml /tmp/build/RUNcd/tmp/build && mvn -q dependency:resolveADD src /tmp/build/src#構建應用RUNcd/tmp/build && mvn -q -DskipTests=truepackage \#拷貝編譯結果到指定目錄&& mv target/*.jar /app.jar \#清理編譯痕跡&&cd/ && rm -rf /tmp/buildVOLUME /tmpEXPOSE8080ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
由于項目使用 Maven 構建,故本次基礎鏡像選用maven:3.3.3官方鏡像。
官方維護的 Maven 鏡像依賴于 Java 鏡像構建,所以我們不需要使用 Java 鏡像。
因為 Spring Boot 框架打包的應用是一個包含依賴的 jar 文件,內嵌了 Tomcat 和 Jetty 支持,所以我們只需要使用包含 Java 的 Maven 鏡像即可,不需要 Tomcat 鏡像。
為了減少鏡像大小,在執行 Maven 構建之后,清理了構建痕跡。
在 Dockerfile 文件的最后,使用ENTRYPOINT指令執行啟動 Java 應用的操作。
Dockerfile 具體語法請參考:Dockerfile。
在一切準備好之后,在應用根目錄執行如下命令,構建 Docker 鏡像:
dockerbuild -t docker-demo-spring-boot .
最后,讓我們從鏡像啟動容器:
dockerrun -d -p8080:8080docker-demo-spring-boot
打開瀏覽器,或者使用 curl 訪問如下地址:
http://127.0.0.1:8080
將會看到Hello! Docker!文字。
如果看到這段字符串,那么就說明你成功將一個基于 Spring Boot 的應用 Docker 化了。
歡迎來到 Docker 的世界,這個世界有你意想不到的精彩!
本文由 DaoCloud 社區用戶譚文科提供