最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年11月12日 11:58:03   作者:Cocowool  
這篇文章主要介紹了利用 Docker 構(gòu)建簡單的 java 開發(fā)編譯環(huán)境的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

目前 Java 語言的版本很多,除了常用的 Java 8,有一些遺留項(xiàng)目可能使用了 Java 7,也可能有一些比較新的的項(xiàng)目使用了 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)槔こ痰奈募夸浗Y(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)建,這種項(xiàng)目能否使用本文提到的方式來構(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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker部署golang環(huán)境詳解

    Docker部署golang環(huán)境詳解

    最近想學(xué)習(xí)一下golang,自己之前一直把環(huán)境全部安裝在docker上,所以這次也想把golang的環(huán)境安裝在docker上,先不廢話,直接上手
    2022-08-08
  • 解決nacos啟動時防火墻開啟8848的坑

    解決nacos啟動時防火墻開啟8848的坑

    最近操作Nacos時遭遇8848端口無法訪問的問題,嘗試通過安全組和firewall配置仍無法解決,最終發(fā)現(xiàn),firewall對Docker使用專門的作用域,需要在相應(yīng)作用域下開放端口,務(wù)必檢查firewall中針對Docker的設(shè)置,確保8848端口在正確的作用域內(nèi)被允許通行
    2022-10-10
  • Docker進(jìn)入容器運(yùn)行命令的詳細(xì)指南

    Docker進(jìn)入容器運(yùn)行命令的詳細(xì)指南

    Docker 是一個開源的容器化平臺,廣泛應(yīng)用于開發(fā)和生產(chǎn)環(huán)境中,它允許開發(fā)者打包應(yīng)用程序及其依賴項(xiàng)到容器中,本文將詳細(xì)介紹如何通過 Docker 進(jìn)入容器內(nèi)部運(yùn)行命令,探討不同的場景和工具,并提供相關(guān)代碼示例,需要的朋友可以參考下
    2024-11-11
  • Docker的基本命令使用筆記

    Docker的基本命令使用筆記

    這篇文章主要介紹了Docker的基本命令使用筆記,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Docker buildx構(gòu)建多平臺鏡像并推送到私有倉庫的方法

    Docker buildx構(gòu)建多平臺鏡像并推送到私有倉庫的方法

    這篇文章主要介紹了Docker buildx構(gòu)建多平臺鏡像并推送到私有倉庫,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Docker容器和本機(jī)之間的文件傳輸方法

    Docker容器和本機(jī)之間的文件傳輸方法

    這篇文章主要介紹了Docker容器和本機(jī)之間的文件傳輸方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 詳解CentOS 7 : Docker私有倉庫搭建和使用

    詳解CentOS 7 : Docker私有倉庫搭建和使用

    本篇文章主要介紹了詳解CentOS 7 : Docker私有倉庫搭建和使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • linux和docker下mysql安裝方式

    linux和docker下mysql安裝方式

    本文詳細(xì)介紹了在Linux系統(tǒng)中通過命令行安裝MySQL的步驟,包括編輯yum源、下載并啟動MySQL服務(wù)、登錄和修改密碼等操作,同時,文中也提供了在Docker環(huán)境下安裝MySQL的流程,涵蓋了拉取MySQL鏡像、查看運(yùn)行狀態(tài)及登錄MySQL的方法
    2024-09-09
  • Jenkins構(gòu)建Docker鏡像并推送至Harbor倉庫的實(shí)現(xiàn)

    Jenkins構(gòu)建Docker鏡像并推送至Harbor倉庫的實(shí)現(xiàn)

    本文主要介紹了Jenkins構(gòu)建Docker鏡像并推送至Harbor倉庫,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 解決docker修改mysql配置文件的問題

    解決docker修改mysql配置文件的問題

    今天在用docker啟動一個5.7的數(shù)據(jù)庫在建表時候遇到一個問題,但是很快就解決了,下面小編給大家講解下docker怎么修改mysql內(nèi)部的配置,感興趣的朋友跟隨小編一起看看吧
    2022-10-10

最新評論

万州区| 内江市| 黎平县| 漳平市| 吉林省| 阿克| 天气| 固镇县| 辽宁省| 丹巴县| 阿拉善右旗| 汉川市| 华坪县| 搜索| 韶关市| 广元市| 安图县| 浦东新区| 库车县| 咸宁市| 舟山市| 阜平县| 永年县| 尼勒克县| 栾城县| 丰顺县| 昭平县| 龙泉市| 白河县| 信宜市| 沈丘县| 容城县| 安仁县| 泊头市| 桃源县| 化隆| 庆云县| 紫阳县| 渑池县| 盐池县| 正阳县|