Docker容器中的WildFly Swarm JAX-RS微服务
這些天,每個人都在談?wù)撐⒎?wù)。 關(guān)于如何在企業(yè)級應(yīng)用這些原則,有很多意見和想法,而很少有示例。 可以肯定的是,即使在幾天前的會議上,我也很少發(fā)現(xiàn)有人在生產(chǎn)環(huán)境中運(yùn)行Docker容器。 當(dāng)我問起初次體驗以及是否有人玩過時,至少舉起了合理的手。 并查看運(yùn)行容器化基礎(chǔ)結(jié)構(gòu)所需的所有操作級別知識(操作系統(tǒng),網(wǎng)絡(luò)等),我可以理解所有這些。 要使Enterprise Java開發(fā)人員更容易做到,必須做很多事情。 實際上,我們可以使用一些方法來使用日常工具,并將它們與最新技術(shù)結(jié)合起來以進(jìn)行自我教育。 其中之一是WildFly Swarm,它是一種輕量級且簡便的方法來構(gòu)建完全包含的Java EE應(yīng)用程序。 這篇博客文章將向您展示如何在Docker上本地運(yùn)行它。
什么是WildFly Swarm?
WildFly是一款輕巧,靈活,功能豐富且符合Java EE 7的應(yīng)用程序服務(wù)器。 WildFly 9甚至引入了僅27MB的Servlet發(fā)行版 。 兩者都是Java Enterprise項目的堅實基礎(chǔ)。 最新版本的WildFly 10.CR2將成為Red Hat的下一個受支持的Java EE服務(wù)器產(chǎn)品Enterprise Application Platform 7的基礎(chǔ)。
WildFly Swarm擺脫了各種概要文件的靜態(tài)捆綁,使您可以構(gòu)建自己的定制功能Java EE運(yùn)行時。 但是,WildFly Swarm不僅涉及定制的應(yīng)用程序服務(wù)器,而且還涉及到定制的應(yīng)用程序服務(wù)器。 它是關(guān)于將包含相關(guān)應(yīng)用程序服務(wù)器組件的應(yīng)用程序捆綁在一個可執(zhí)行文件中。 這也稱為“ fat-jar”,可以簡單地使用java -jar運(yùn)行。 當(dāng)我們談?wù)撍鼤r:微服務(wù)通常將完整的應(yīng)用程序及其堆棧帶入其中,因此您可以將每個WildFly Swarm應(yīng)用程序視為一個獨(dú)立且完全包含的微服務(wù)。
將Java EE應(yīng)用程序變成胖子
通過添加Maven依賴項和插件,可以將Java EE應(yīng)用程序打包為WildFly Swarm胖子罐。 可以從https://github.com/myfear/WildFlySwarmDockerSample/獲得該簡單JAX-RS示例的完整源代碼。 該應(yīng)用程序本身公開了一個端點(diǎn)/ rs / customer,該端點(diǎn)僅輸出一些文本。 真正的魔力被放入pom.xml文件中。 我們現(xiàn)在正在經(jīng)歷。
首先, 對Java EE 7 API的依賴關(guān)系 ,然后是
<dependency><groupId>org.wildfly.swarm</groupId><artifactId>wildfly-swarm-jaxrs</artifactId><version>${version.wildfly-swarm}</version></dependency>WildFly Swarm插件負(fù)責(zé)應(yīng)用程序的打包:
<plugin><groupId>org.wildfly.swarm</groupId><artifactId>wildfly-swarm-plugin</artifactId><version>${version.wildfly-swarm}</version><executions><execution><goals><goal>package</goal></goals></execution></executions></plugin>這就是所有魔術(shù)。 您可以使用“ mvn軟件包”來構(gòu)建應(yīng)用程序。 您將在目標(biāo)文件夾中找到war文件本身以及一個附加附件“ swarm-sample-1.0-SNAPSHOT-swarm.jar”。 如果打開該文件夾,則可以找到一個m2repo文件夾,其中包含所有從屬庫,并且您的應(yīng)用程序本身捆綁在_bootstrap \文件夾中。 您可以從maven項目中的命令行直接運(yùn)行它(Windows用戶可能會遇到此問題 ):
java -jar target/swarm-1.0-SNAPSHOT-swarm.jar將瀏覽器重定向到http:// localhost:8080 / rs / customer將向您顯示一些json
{"text":"WildFly Swarm Docker Application on OpenShift at http://192.168.99.100:32773/rs/ - Hostname: 093ca3279a43"}Docker化WildFly Swarm
WildFly Swarm項目在github上有一些Docker示例。 大多數(shù)情況下,bash腳本和一些包裝器可以對您的項目進(jìn)行docker化。 但是還有更好的東西:Roland Huss的Docker Maven插件 。 我之前已經(jīng)使用過幾次,并且在本示例中也使用了它。 您所要做的就是將插件添加到pom.xml中 。
<plugin><groupId>org.jolokia</groupId><artifactId>docker-maven-plugin</artifactId><version>${docker.maven.plugin.version}</version> </plugin>配置有點(diǎn)棘手。 (感謝Roland在過去幾天給我的所有電子郵件支持!)。 首先,基礎(chǔ)很簡單。 將圖像添加到插件配置中,并相應(yīng)地命名。 我繼承自jboss / jdk-base:8,圖像獲得名稱并標(biāo)記為myfear / swarm-sample:latest( 第77ff行 )。 構(gòu)建配置公開端口8080并定義相關(guān)入口點(diǎn) (使用-jar參數(shù)啟動java的命令)。 圖像的組裝需要包括項目附件 ,并將附件作為依賴項 。 確保輸出服務(wù)映射和basedir與入口點(diǎn)參數(shù)匹配。
讓我們對其進(jìn)行測試
確保您的主機(jī)上具有docker-machine設(shè)置。 創(chuàng)建一個開發(fā)機(jī)器并相應(yīng)地配置環(huán)境變量。 現(xiàn)在您可以運(yùn)行:
mvn clean install docker:build docker:start -Ddocker.follow( 注: 10.3.5 Docker Maven插件中的錯誤實際上現(xiàn)在無法立即提取基本映像。您需要在執(zhí)行maven運(yùn)行之前手動執(zhí)行'docker pull jboss / jdk-base:8'。)
將構(gòu)建該項目,并從映像啟動一個容器。
恭喜,您現(xiàn)在在本地Docker實例中有一個正在運(yùn)行的Java EE微服務(wù)。 下一個博客實際上將研究如何獲取此圖像并將其在OpenShift Origin上運(yùn)行并根據(jù)您的需求進(jìn)行縮放。
翻譯自: https://www.javacodegeeks.com/2015/10/a-wildfly-swarm-jax-rs-microservice-in-a-docker-container.html
總結(jié)
以上是生活随笔為你收集整理的Docker容器中的WildFly Swarm JAX-RS微服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AI 识别能力超过人眼,仅凭照片,就能快
- 下一篇: 带有骆驼,ActiveMQ,Elasti