Docker構(gòu)建Java鏡像并部署Java項(xiàng)目的完整步驟
前言
本文介紹了如何使用Docker構(gòu)建一個(gè)Java項(xiàng)目的鏡像,并以后端項(xiàng)目為例進(jìn)行演示。在這個(gè)例子中,我們將使用 eclipse-temurin:8-jre
作為基礎(chǔ)鏡像,并創(chuàng)建一個(gè)可以運(yùn)行Java項(xiàng)目的Docker鏡像。
1. 準(zhǔn)備工作
在開(kāi)始之前,我們需要做一些準(zhǔn)備工作。首先,確保你已經(jīng)安裝了Docker,并具有構(gòu)建和運(yùn)行Docker鏡像的權(quán)限。
接下來(lái),我們需要準(zhǔn)備Java項(xiàng)目的可執(zhí)行JAR文件。假設(shè)我們的Java項(xiàng)目構(gòu)建后的可執(zhí)行JAR文件位于 ./wms-admin/target/code-safe.jar
。我們將在Docker鏡像中將該JAR文件復(fù)制到容器中,并在容器中運(yùn)行它。
2. 創(chuàng)建Dockerfile
在項(xiàng)目根目錄下創(chuàng)建一個(gè)名為 Dockerfile
的文件,并使用以下內(nèi)容:
# 指定基礎(chǔ)鏡像 FROM eclipse-temurin:8-jre # 在鏡像中執(zhí)行命令,創(chuàng)建目錄,并使用它作為工作目錄 RUN mkdir -p /project # 設(shè)置工作目錄,即后續(xù)命令的默認(rèn)執(zhí)行路徑 WORKDIR /project # 復(fù)制文件或目錄到鏡像中。可以將本地文件或目錄復(fù)制到鏡像的指定位置。 COPY ./code-safe.jar /project/code-safe.jar # 設(shè)置環(huán)境變量 # 指定容器的時(shí)區(qū) ENV TZ=Asia/Shanghai # 用于配置 Java 虛擬機(jī)的選項(xiàng),如初始堆大小、最大堆大小和隨機(jī)數(shù)生成器,可通過(guò) docker run -e "JAVA_OPTS=" 進(jìn)行覆蓋 ENV JAVA_OPTS="-Xms512m -Xmx1024m -Djava.security.egd=file:/dev/./urandom" ## 應(yīng)用參數(shù) ENV ARGS="" # 定義容器啟動(dòng)后執(zhí)行的命令,啟動(dòng)后端項(xiàng)目 CMD java ${JAVA_OPTS} -jar code-safe.jar $ARGS # 聲明要監(jiān)聽(tīng)的端口 EXPOSE 16000
在這個(gè)Dockerfile中,我們使用 eclipse-temurin:8-jre
作為基礎(chǔ)鏡像。然后,我們創(chuàng)建一個(gè)工作目錄/project,并將Java項(xiàng)目的可執(zhí)行JAR文件復(fù)制到容器中的該目錄下。
接下來(lái),我們?cè)O(shè)置了一些環(huán)境變量,用于配置Java虛擬機(jī)的選項(xiàng)和應(yīng)用參數(shù)。其中,JAVA_OPTS用于配置Java虛擬機(jī)的一些選項(xiàng),如初始堆大小和最大堆大小。我們還定義了一個(gè)ARGS環(huán)境變量,用于傳遞應(yīng)用程序的命令行參數(shù)。
最后,我們使用CMD指令定義容器啟動(dòng)后要執(zhí)行的命令。在這個(gè)例子中,我們將以 ${JAVA_OPTS}
和 ${ARGS}
為參數(shù)啟動(dòng)Java應(yīng)用程序。
3. 構(gòu)建鏡像
- 準(zhǔn)備好資源
- 將資源
jar包
,Dockerfile
放在同一個(gè)目錄中 - 使用docker build命令來(lái)構(gòu)建我們的Java鏡像
docker build -t java .
其中,-t選項(xiàng)指定鏡像的名稱為java,.表示Dockerfile所在的當(dāng)前目錄。
4. 查看鏡像是否構(gòu)建成功
docker images
5. 運(yùn)行容器
完成鏡像的構(gòu)建后,我們可以使用docker run命令來(lái)運(yùn)行容器:
docker run -d -p 16000:16000 --name myjava java:latest
-d參數(shù)表示以后臺(tái)方式運(yùn)行容器-p 16000:16000參數(shù)表示將容器的16000端口映射到主機(jī)的16000端口–name myjava 參數(shù)表示為容器指定一個(gè)名字。
查看容器是否運(yùn)行成功
docker ps -a
6. 訪問(wèn)Java服務(wù)
現(xiàn)在,我們已經(jīng)成功運(yùn)行了一個(gè)Java項(xiàng)目的Docker容器。我們可以通過(guò)訪問(wèn)http://localhost:16000來(lái)訪問(wèn)我們的Java應(yīng)用程序。
7. 總結(jié)
本文介紹了如何使用Docker構(gòu)建一個(gè)Java項(xiàng)目的鏡像,并在容器中運(yùn)行它。通過(guò)使用Docker,我們可以將Java應(yīng)用程序打包為一個(gè)獨(dú)立的容器,使得應(yīng)用程序的部署和管理更加簡(jiǎn)單和靈活。
到此這篇關(guān)于Docker構(gòu)建Java鏡像并部署Java項(xiàng)目的文章就介紹到這了,更多相關(guān)Docker構(gòu)建Java鏡像并部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker啟動(dòng)容器報(bào)錯(cuò):Ports are not available的解決方案
這篇文章主要介紹了Docker啟動(dòng)容器報(bào)錯(cuò):Ports are not available的解決方案,Docker 將容器程序的端口號(hào)映射到宿主機(jī)的端口號(hào),是一個(gè) NAT 過(guò)程,這個(gè)過(guò)程可能會(huì)因?yàn)榕c Windows NAT 服務(wù)沖突而失效,文中有詳細(xì)的解決方案,需要的朋友可以參考下2024-03-03Windows的docker刪除容器后WSL2磁盤空間不釋放的問(wèn)題的解決方法
很多同學(xué)拉取鏡像使用一段時(shí)間后發(fā)現(xiàn) C 盤快滿了,把之前用過(guò)的鏡像和容器刪除,發(fā)現(xiàn) WSL 掛載目錄的虛擬磁盤大小沒(méi)有變化,非常的奇怪,所以本文介紹了Windows的docker刪除容器后WSL2磁盤空間不釋放的問(wèn)題的解決方法,需要的朋友可以參考下2024-12-12docker 容器數(shù)據(jù)在盤與盤之間遷移方法
這篇文章主要介紹了docker 容器數(shù)據(jù)在盤與盤之間遷移方法,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-04-04詳解使用Dockerfile創(chuàng)建帶Apache服務(wù)的CentOS Docker鏡像
本篇文章主要介紹了使用Dockerfile創(chuàng)建帶Apache服務(wù)的CentOS Docker鏡像,具有一定的參考價(jià)值,有興趣的可以了解一下。2016-12-12半小時(shí)實(shí)現(xiàn)基于ChatGPT搭建微信機(jī)器人
這篇文章主要為大家介紹了基于ChatGPT搭建微信機(jī)器人過(guò)程示例詳解,半小時(shí)就能完成,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02Docker服務(wù)的重啟服務(wù)命令詳解(systemctl restart docker)
這篇文章主要介紹了Docker服務(wù)的重啟服務(wù)命令(systemctl restart docker),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11docker部署安裝jenkins的實(shí)現(xiàn)步驟
本文主要介紹了docker部署安裝jenkins的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12