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)指定鏡像的名稱(chē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如何部署帶有界面的registry倉(cāng)庫(kù)
這篇文章主要介紹了docker如何部署帶有界面的registry倉(cāng)庫(kù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
Docker教程之Ubuntu 安裝 Docker詳細(xì)介紹
這篇文章主要介紹了Docker教程之Ubuntu 安裝 Docker詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-12-12
SpringCloud基于Docker和Docker-Compose的項(xiàng)目部署過(guò)程
本文介紹了如何卸載舊版本Docker、更新系統(tǒng)、安裝Docker及其依賴(lài),并設(shè)置國(guó)內(nèi)鏡像源以加快下載速度,詳細(xì)說(shuō)明了如何安裝Docker Compose、配置鏡像加速器,并展示了如何使用Docker Compose部署SpringCloud項(xiàng)目,提供了更新和重啟容器的方法2024-10-10
docker將本地鏡像發(fā)布到阿里云的實(shí)現(xiàn)方法
本文主要介紹了docker將本地鏡像發(fā)布到阿里云的實(shí)現(xiàn)方法,文中根據(jù)實(shí)例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
一文搞定Docker安裝ElasticSearch的過(guò)程
通過(guò)本文可以幫助大家快速學(xué)習(xí)Docker安裝ElasticSearch的過(guò)程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-08-08

