本篇內容介紹了“Java工程師怎么在Docker上進(jìn)行開(kāi)發(fā)”的有關(guān)知識,在實(shí)際案例的操作過(guò)程中,不少人都會(huì )遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學(xué)有所成!
安裝
現在有很多的Java Web框架,挑選一個(gè)非常小的框架,選擇Spark吧!它是一款基于Java-8的微型Sinatra框架。如果你去閱讀Spark的說(shuō)明文檔,會(huì )了解它是用Maven作為其構建工具。
在本示例里,會(huì )利用Maven和Docker的分層文件系統(UnionFS),從零開(kāi)始安裝一切。與此同時(shí),當重新編譯變動(dòng)的內容時(shí),也需要一些時(shí)間。
因此,你需要的預備知識是:無(wú)需Java,無(wú)需Maven,只需Docker。
源代碼和配置文件
本例中,你必須得添加以下3個(gè)文件:
* Maven配置:`pom.xml`
* Java文件:`Hello.java`
* `Dockerfile`
如果覺(jué)得篇幅過(guò)長(cháng),可以直接[克隆如下repo]:
```
git clone https://github.com/giantswarm/sparkexample
```
pom.xml
`pom.xml`文件包含一個(gè)基本的Maven配置。這個(gè)大家都很熟悉的了!它用Java1.8編譯器配置Spark的依賴(lài)項,并用所有依賴(lài)項創(chuàng )建一個(gè)大的jar包。有多大???不過(guò)肯定要比希云的微鏡像大!如果你還不知道希云的微鏡像,那你就快OUT了。微鏡像地址:http://csphere.cn/hub
Hello.java
`pom.xml`文件定義了一個(gè)類(lèi)名叫:`sparkexample.Hello`的 main class(主類(lèi))。在子路徑`src/main/java/sparkexample/`下創(chuàng )建Hello.java文件。
正如你看到的,這是最新的Java代碼:靜態(tài)導入和lambda表達式,使該例子非常緊湊。類(lèi)包含一個(gè)main method(主要方法),響應root請求("/")。像HelloWorld一樣普通,響應只是簡(jiǎn)單的字符串。
Dockerfile
最后一個(gè)也是,最重要的一個(gè)文件:`Dockerfile`
```
FROM java:8
# Install maven
RUN apt-get update
RUN apt-get install -y maven
WORKDIR /code
# Prepare by downloading dependencies
ADD pom.xml /code/pom.xml
RUN ["mvn", "dependency:resolve"]
RUN ["mvn", "verify"]
# Adding source, compile and package into a fat jar
ADD src /code/src
RUN ["mvn", "package"]
EXPOSE 4567
CMD ["/usr/lib/jvm/java-8-openjdk-amd64/bin/java", "-jar", "target/sparkexample-jar-with-dependencies.jar"]
```
基于`java8`,安裝Maven,和構建jar包。(如想構建jdk,jre的docker鏡像請查看http://csphere.cn/hub/jdk)。通過(guò)添加pom.xml文件解析依賴(lài)項實(shí)現構建。
實(shí)際操作過(guò)程中會(huì )發(fā)現,如果我們不改變pom.xml而想重新編譯app,之前的步驟已被緩存,只運行最后的步驟,這將使重編譯速度更快。這點(diǎn)docker的優(yōu)勢非常明顯!
創(chuàng )建和運行
有以上3個(gè)文件后,創(chuàng )建Docker鏡像就變得非常簡(jiǎn)單:
$ docker build -t csphere/sparkexample .
注意:第一次構建時(shí),需要等一會(huì )。需要先下載安裝Maven,還會(huì )下載所有項目依賴(lài)項。以后每次編譯啟動(dòng)只需要幾秒鐘就可以了,不要問(wèn)我為什么為什么只需幾秒,因為有緩存。
鏡像創(chuàng )建好后,啟動(dòng)容器:
$ docker run -d -p 4567:4567 csphere/sparkexample
測試:
$ curl localhost:4567
hello from sparkjava.com
創(chuàng )建鏡像就這么簡(jiǎn)單!現在,可以去修改源代碼,再重新編譯,是不是很簡(jiǎn)單,很棒呢?!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站