使用Docker打包和運行Java鏡像的完整指南
摘要
本教程包括以下內(nèi)容:
- 準備Java鏡像的基礎環(huán)境。
- 編寫啟動腳本和Dockerfile。
- 使用Docker構(gòu)建Java應用鏡像。
- 啟動容器運行Java應用。
- 可能遇到的問題及解決方案。
最后會引導大家加我的微信,方便隨時交流!
引言
Docker作為一種輕量級容器化技術,可以極大地方便應用的部署和管理。通過Docker,我們可以在任何支持Docker的系統(tǒng)上輕松運行Java應用,而不需要單獨安裝Java環(huán)境。
正文
1. 準備工作
安裝Docker確保系統(tǒng)上已經(jīng)安裝了Docker。如果尚未安裝,請參考官方文檔進行安裝。
加載基礎Java鏡像使用以下命令加載Java鏡像(這里假設你已經(jīng)有了一個本地的Java鏡像文件):
docker load -i <鏡像文件名>
例如:
docker load -i jdk-1.8.0_432.tar
加載成功后,可以通過以下命令查看鏡像:
docker images


準備項目所需文件
需要準備的文件包括:- Java應用的JAR包(如
demo-0.0.1-SNAPSHOT.jar)。 - 應用配置文件(如
application.properties)。 - 啟動腳本(
start_1.sh)。 - Dockerfile。
- Java應用的JAR包(如
2. 編寫啟動腳本
以下是一個完整的start_1.sh腳本,用于啟動Java應用。每一部分都有詳細注釋,幫助你理解其功能:
#!/bin/sh
# 設置環(huán)境變量以支持UTF-8編碼
export LANG=en_US.UTF-8
TZ='CST-8'
export TZ
# 定義JAR文件目錄、JAR文件名和日志目錄
JarDir="/ywc/zb/" # JAR包的存放路徑
LogDir="/ywc/zb/" # 日志文件的存放路徑
JarFile="demo-0.0.1-SNAPSHOT.jar" # JAR文件名稱
OutFile="demo.log" # 輸出的日志文件名稱
# 將腳本運行信息寫入日志
echo "Starting application..." > $LogDir$OutFile
# 檢查是否已有運行的Java進程
ThreadID=$(ps -ef | grep $JarFile | grep -v grep | awk '{print $2}')
if [ ! -z $ThreadID ]; then
echo "$JarFile 已在進程 $ThreadID 中運行,嘗試終止..." >> $LogDir$OutFile
kill -9 $ThreadID
echo "已終止存在的進程 $ThreadID。" >> $LogDir$OutFile
fi
# 啟動Java應用
nohup java -Dfile.encoding=UTF-8 -jar $JarDir$JarFile \
-Xmx1024m -Xms1024m \
--spring.config.location=${JarDir}application.yml \
--spring.config.location=${JarDir}application.properties >> $LogDir$OutFile &
echo "啟動 $JarFile..." >> $LogDir$OutFile
sleep 3s
# 實時顯示日志
tail -f $LogDir$OutFile
3. 編寫Dockerfile
下面是Dockerfile的內(nèi)容:
# 基于指定版本的Java鏡像 FROM jdk:1.8.0_432 # Java版本 # 添加Java應用的JAR包到容器中 ADD demo-0.0.1-SNAPSHOT.jar /ywc/zb/demo-0.0.1-SNAPSHOT.jar # 設置時區(qū) ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone # 添加配置文件 ADD application.properties /ywc/zb/application.properties # 添加啟動腳本 ADD start_1.sh /ywc/zb/start_1.sh # 設置工作目錄 WORKDIR /ywc/zb # 暴露應用端口 EXPOSE 18080 # 賦予啟動腳本可執(zhí)行權限 RUN chmod +x /ywc/zb/start_1.sh # 指定啟動容器時運行的命令 ENTRYPOINT ["./start_1.sh"]
4. 構(gòu)建鏡像并運行容器
文件名字:demo-api
版本: 1.0
構(gòu)建Docker鏡像
使用以下命令構(gòu)建鏡像:
docker build -t demo-api:1.0 .
運行Docker容器
18080 端口
運行容器并映射端口
docker run -it -p 18080:18080 demo-api:1.0
如果需要進入容器調(diào)試,可以運行:
docker run -it demo-api:1.0 /bin/bash
5. 驗證應用運行
訪問容器暴露的端口,確保應用正常運行。例如,如果應用監(jiān)聽在18080端口,可以通過瀏覽器訪問 http://<服務器IP>:18080。

總結(jié)
通過以上步驟,你已經(jīng)成功使用Docker打包并運行了一個Java應用鏡像。這種方式可以極大地簡化應用部署流程,并提高運行環(huán)境的穩(wěn)定性。
到此這篇關于使用Docker打包和運行Java鏡像的完整指南的文章就介紹到這了,更多相關Docker打包和運行Java鏡像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
淺析Docker如何創(chuàng)建自定義容器(附通用Python 3.12模板)
這篇文章主要為大家詳細介紹了Docker如何創(chuàng)建自定義容器,并附上通用Python 3.12模板,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下2025-11-11
Docker多階段構(gòu)建鏡像multi-stage詳解
多階段構(gòu)建是Docker 17.05及以上版本的新特性,允許在一個Dockerfile中使用多個階段,每個階段可以有一個獨立的基礎鏡像,并且可以通過COPY --from命令在階段之間傳遞文件,這樣可以有效地減少最終鏡像的大小,只保留必要的文件2025-10-10
Docker本地部署Drupal并實現(xiàn)公網(wǎng)訪問的詳細步驟
Drupal是使用PHP語言編寫的開源內(nèi)容管理框架(CMF),它由內(nèi)容管理系統(tǒng)(CMS)和PHP開發(fā)框架(Framework)共同構(gòu)成,這篇文章主要給大家介紹了關于Docker本地部署Drupal并實現(xiàn)公網(wǎng)訪問的詳細步驟,需要的朋友可以參考下2023-12-12

