Java工程師如何在Docker上進行開發

Java工程師如何在Docker上進行開發?本文能讓你以最小的平常開支和預備知識就能夠把Docker和Java結合使用。java

安裝git

如今有不少的Java Web框架,挑選一個很是小的框架,選擇Spark吧!它是一款基於Java-8的微型Sinatra框架。若是你去閱讀Spark的說明文檔,會了解它是用Maven做爲其構建工具。github

 
在本示例裏,會利用Maven和Docker的分層文件系統(UnionFS),從零開始安裝一切。與此同時,當從新編譯變更的內容時,也須要一些時間。
docker

所以,你須要的預備知識是:無需Java,無需Maven,只需Docker。緩存

源代碼和配置文件
app

本例中,你必須得添加如下3個文件:框架

*   Maven配置:`pom.xml`
*   Java文件:`Hello.java`
*   `Dockerfile`
curl

若是以爲篇幅過長,能夠直接[克隆以下repo]jvm

```
git clone
https://github.com/giantswarm/sparkexample
```maven

pom.xml

`pom.xml`文件包含一個基本的Maven配置。這個你們都很熟悉的了!它用Java1.8編譯器配置Spark的依賴項,並用全部依賴項建立一個大的jar包。有多大啊?不過確定要比希雲的微鏡像大!若是你還不知道希雲的微鏡像,那你就快OUT了。微鏡像地址:http://csphere.cn/hub

Hello.java

`pom.xml`文件定義了一個類名叫:`sparkexample.Hello`的 main class(主類)。在子路徑`src/main/java/sparkexample/`下建立Hello.java文件。

正如你看到的,這是最新的Java代碼:靜態導入和lambda表達式,使該例子很是緊湊。類包含一個main method(主要方法),響應root請求("/")。像HelloWorld同樣普通,響應只是簡單的字符串。

Dockerfile

最後一個也是,最重要的一個文件:`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)。經過添加pom.xml文件解析依賴項實現構建。

實際操做過程當中會發現,若是咱們不改變pom.xml而想從新編譯app,以前的步驟已被緩存,只運行最後的步驟,這將使重編譯速度更快。這點docker的優點很是明顯!

建立和運行

有以上3個文件後,建立Docker鏡像就變得很是簡單:

    $ docker build -t csphere/sparkexample .

注意:第一次構建時,須要等一會。須要先下載安裝Maven,還會下載全部項目依賴項。之後每次編譯啓動只須要幾秒鐘就能夠了,不要問我爲何爲何只需幾秒,由於有緩存。

鏡像建立好後,啓動容器:

    $ docker run -d -p 4567:4567 csphere/sparkexample


測試:

    $ curl localhost:4567
    hello from sparkjava.com 

建立鏡像就這麼簡單!如今,能夠去修改源代碼,再從新編譯,是否是很簡單,很棒呢?!

結論

雖然這只是個基礎的例子,可是咱們仍然但願,你勇於嘗試而且熱衷於在Docker上進行Java開發。瞭解更多docker相關知識,請訪問希雲官方網站:https://csphere.cn

相關文章
相關標籤/搜索