使用Docker打包和運(yùn)行Java鏡像的完整指南
摘要
本教程包括以下內(nèi)容:
- 準(zhǔn)備Java鏡像的基礎(chǔ)環(huán)境。
- 編寫啟動腳本和Dockerfile。
- 使用Docker構(gòu)建Java應(yīng)用鏡像。
- 啟動容器運(yùn)行Java應(yīng)用。
- 可能遇到的問題及解決方案。
最后會引導(dǎo)大家加我的微信,方便隨時交流!
引言
Docker作為一種輕量級容器化技術(shù),可以極大地方便應(yīng)用的部署和管理。通過Docker,我們可以在任何支持Docker的系統(tǒng)上輕松運(yùn)行Java應(yīng)用,而不需要單獨(dú)安裝Java環(huán)境。
正文
1. 準(zhǔn)備工作
安裝Docker確保系統(tǒng)上已經(jīng)安裝了Docker。如果尚未安裝,請參考官方文檔進(jìn)行安裝。
加載基礎(chǔ)Java鏡像使用以下命令加載Java鏡像(這里假設(shè)你已經(jīng)有了一個本地的Java鏡像文件):
docker load -i <鏡像文件名>
例如:
docker load -i jdk-1.8.0_432.tar
加載成功后,可以通過以下命令查看鏡像:
docker images
準(zhǔn)備項(xiàng)目所需文件
需要準(zhǔn)備的文件包括:- Java應(yīng)用的JAR包(如
demo-0.0.1-SNAPSHOT.jar
)。 - 應(yīng)用配置文件(如
application.properties
)。 - 啟動腳本(
start_1.sh
)。 - Dockerfile。
- Java應(yīng)用的JAR包(如
2. 編寫啟動腳本
以下是一個完整的start_1.sh
腳本,用于啟動Java應(yīng)用。每一部分都有詳細(xì)注釋,幫助你理解其功能:
#!/bin/sh # 設(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" # 輸出的日志文件名稱 # 將腳本運(yùn)行信息寫入日志 echo "Starting application..." > $LogDir$OutFile # 檢查是否已有運(yùn)行的Java進(jìn)程 ThreadID=$(ps -ef | grep $JarFile | grep -v grep | awk '{print $2}') if [ ! -z $ThreadID ]; then echo "$JarFile 已在進(jìn)程 $ThreadID 中運(yùn)行,嘗試終止..." >> $LogDir$OutFile kill -9 $ThreadID echo "已終止存在的進(jìn)程 $ThreadID。" >> $LogDir$OutFile fi # 啟動Java應(yīng)用 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 # 實(shí)時顯示日志 tail -f $LogDir$OutFile
3. 編寫Dockerfile
下面是Dockerfile
的內(nèi)容:
# 基于指定版本的Java鏡像 FROM jdk:1.8.0_432 # Java版本 # 添加Java應(yīng)用的JAR包到容器中 ADD demo-0.0.1-SNAPSHOT.jar /ywc/zb/demo-0.0.1-SNAPSHOT.jar # 設(shè)置時區(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 # 設(shè)置工作目錄 WORKDIR /ywc/zb # 暴露應(yīng)用端口 EXPOSE 18080 # 賦予啟動腳本可執(zhí)行權(quán)限 RUN chmod +x /ywc/zb/start_1.sh # 指定啟動容器時運(yùn)行的命令 ENTRYPOINT ["./start_1.sh"]
4. 構(gòu)建鏡像并運(yùn)行容器
文件名字:demo-api
版本: 1.0
構(gòu)建Docker鏡像
使用以下命令構(gòu)建鏡像:
docker build -t demo-api:1.0 .
運(yùn)行Docker容器
18080 端口
運(yùn)行容器并映射端口
docker run -it -p 18080:18080 demo-api:1.0
如果需要進(jìn)入容器調(diào)試,可以運(yùn)行:
docker run -it demo-api:1.0 /bin/bash
5. 驗(yàn)證應(yīng)用運(yùn)行
訪問容器暴露的端口,確保應(yīng)用正常運(yùn)行。例如,如果應(yīng)用監(jiān)聽在18080
端口,可以通過瀏覽器訪問 http://<服務(wù)器IP>:18080
。
總結(jié)
通過以上步驟,你已經(jīng)成功使用Docker打包并運(yùn)行了一個Java應(yīng)用鏡像。這種方式可以極大地簡化應(yīng)用部署流程,并提高運(yùn)行環(huán)境的穩(wěn)定性。
到此這篇關(guān)于使用Docker打包和運(yùn)行Java鏡像的完整指南的文章就介紹到這了,更多相關(guān)Docker打包和運(yùn)行Java鏡像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker容器開啟設(shè)置自動啟動的實(shí)現(xiàn)方法
通過在Docker中設(shè)置容器的默認(rèn)啟動命令,我們可以實(shí)現(xiàn)在容器啟動時自動啟動服務(wù)的功能,具有一定的參考價值,感興趣的可以了解一下2023-10-10docker環(huán)境下安裝jenkins容器的詳細(xì)教程
這篇文章主要介紹了docker環(huán)境下安裝jenkins容器的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05CentOS7.2服務(wù)器上搭建Docker私有鏡像倉庫操作示例
這篇文章主要介紹了CentOS7.2服務(wù)器上搭建Docker私有鏡像倉庫操作,結(jié)合實(shí)例形式分析了基于CentOS7.2平臺docker安裝、證書和密鑰生成、私有鏡像創(chuàng)建與啟動等操作相關(guān)命令與使用技巧,需要的朋友可以參考下2018-06-06docker?創(chuàng)建容器時指定容器ip的實(shí)現(xiàn)示例
在實(shí)際部署中,我們需要指定容器ip,本文主要介紹了docker?創(chuàng)建容器時指定容器ip,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12Docker內(nèi)如何訪問本機(jī)(宿主機(jī))的具體方法
這篇文章主要介紹了Docker內(nèi)如何訪問本機(jī)(宿主機(jī))的具體方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10