人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

利用 Docker 構(gòu)建簡單的 java 開發(fā)編譯環(huán)境的方法詳解

發(fā)布日期:2022-01-08 11:27 | 文章來源:gibhub

目前 Java 語言的版本很多,除了常用的 Java 8,有一些遺留項目可能使用了 Java 7,也可能有一些比較新的的項目使用了 Java 10 以上的版本。如果想切換自己本地的 Java 開發(fā)環(huán)境,折騰起來還是需要花費(fèi)一些時間的,并且日后在不同版本間切換每次都要折騰一次。

Docker 的出現(xiàn)讓我們維護(hù)不同版本的開發(fā)編譯環(huán)境變得簡單,如果你還不知道什么是 Docker 可以看看 Docker 入門介紹。我們可以采用兩種方式來構(gòu)建 java 的開發(fā)環(huán)境,一種是在容器內(nèi)編譯運(yùn)行,一種是在容器外編譯運(yùn)行,下面分別來看看具體如何操作。

準(zhǔn)備工作:首先確保已經(jīng)安裝了 Docker ,如果方便可以提前把 openjdk:8 的鏡像拉取下來,到時可以節(jié)省大家的時間。本文在 macOs 10.15.7 、Docker 19.03.8 的環(huán)境下驗(yàn)證通過。

容器內(nèi)編譯與運(yùn)行

本文以一個簡單的 Helloworld 程序?yàn)槔?,工程的文件目錄結(jié)構(gòu)及代碼如下。

$ ls -lh
total 24
-rw-r--r-- 1 shiqiang staff 60B 11 11 19:02 Dockerfile
-rw-r--r-- 1 shiqiang staff 123B 11 11 19:02 Helloworld.java

代碼的內(nèi)容。

public class Helloworld {
 public static void main(String args[]){
 System.out.println("Hello world.\n");
 }
}

做好以上準(zhǔn)備后,就可以編輯 Dockerfile 的內(nèi)容。

FROM openjdk:8 							#基于 openjdk:8 構(gòu)建鏡像
COPY . /usr/src/myapp 			 #將目錄內(nèi)的代碼拷貝到鏡像中 /usr/src/myapp 的位置
WORKDIR /usr/src/myapp 			#將 /usr/src/myapp 設(shè)為工作目錄
RUN javac Helloworld.java 	 #運(yùn)行編譯命令,編譯 Helloworld.java 程序
CMD ["java", "Helloworld"] #執(zhí)行編譯出來的 Helloworld

構(gòu)建鏡像文件。

$ docker build -t java_in_docker_env_8 . 
$ docker images # 使用 docker images 命令可以看到構(gòu)建出來的 java_in_docker_env_8 鏡像

運(yùn)行容器。

$ docker run -it --rm java_in_docker_env_8
Hello world.
$ ls -lh     
total 24
-rw-r--r-- 1 shiqiang staff 112B 11 12 10:53 Dockerfile
-rw-r--r-- 1 shiqiang staff 123B 11 12 10:49 Helloworld.java

可以看到程序的輸出,并且看到當(dāng)前目錄下并有沒編譯出來的結(jié)果。但是這種方式每次啟動容器的時候都要進(jìn)行編譯,并且沒有辦法把編譯結(jié)果進(jìn)行分享,下一節(jié)的內(nèi)容介紹如何在容器外保存編譯結(jié)果。

容器外編譯與運(yùn)行

工作目錄和代碼準(zhǔn)備與上一節(jié)相同,Dockerfile 文件與上一節(jié)略有不同。

FROM openjdk:8
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp

構(gòu)建鏡像文件。

$ docker build -t java_env_8
$ docker images # 使用 docker images 命令可以看到構(gòu)建出來的 java_env_8 鏡像

編譯文件。

$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp java_env_8 javac Helloworld.java
$ ls -lh	# 可以看到編譯出來的結(jié)果
total 32
-rw-r--r-- 1 shiqiang staff 112B 11 12 10:53 Dockerfile
-rw-r--r-- 1 shiqiang staff 427B 11 12 11:09 Helloworld.class
-rw-r--r-- 1 shiqiang staff 123B 11 12 10:49 Helloworld.java

運(yùn)行程序。

$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp java_env_8 java Helloworld 
Hello world.

寫在最后

本文僅僅構(gòu)建了一個簡單的 java 開發(fā)環(huán)境,使用這種方式編譯運(yùn)行 java 程序的好處是無需在本地安裝 jdk ,在需要為多個 jdk 版本編譯程序的時候更加方便。但是對于復(fù)雜的工程常常使用 maven 或者 graddle 進(jìn)行構(gòu)建,這種項目能否使用本文提到的方式來構(gòu)建呢,敬請期待本系列的下一篇文章,也歡迎大家關(guān)注公眾號獲得最新的文章推送。

參考資料Docker - Create a Java development environment

到此這篇關(guān)于利用 Docker 構(gòu)建簡單的 java 開發(fā)編譯環(huán)境的文章就介紹到這了,更多相關(guān)docker構(gòu)建java開發(fā)編譯環(huán)境內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

實(shí)時開通

自選配置、實(shí)時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部