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