使用Docker簡單部署java項(xiàng)目

1.項(xiàng)目打包并上傳

把自己的java項(xiàng)目打成jar包


image.png

然后上傳至服務(wù)器,直接cp到/opt/java_app_docker目錄下


image.png

2.編寫 Dockerfile文件

在相同目錄下創(chuàng)建Dockerfile
vim Dockerfile
然后輸入

# 拉取jdk8作為基礎(chǔ)鏡像
FROM openjdk:8
# 作者
MAINTAINER 123
# 添加jar到鏡像并命名為text.jar
ADD text.jar /app/text.jar
# 鏡像啟動(dòng)后暴露的端口
EXPOSE 8091
# jar運(yùn)行命令,參數(shù)使用逗號(hào)隔開
ENTRYPOINT ["java","-jar","/app/text.jar"]

3.創(chuàng)建jar掛載目錄

在/opt/java_app_docker目錄下創(chuàng)建app文件夾
`mkdir app'
把你的jar包c(diǎn)p一份到宿主機(jī)/opt/java_app_docker/app目錄, 這里一定要在app目錄下存放你的jar,不然容器啟動(dòng)會(huì)失敗,找不到j(luò)ar


image.png

4.使用docker命令打包

docker build -t text .
text表示鏡像名稱
最后的.表示Dockerfile在當(dāng)前目錄
打包完成后使用docker images查看鏡像

image.png

5.創(chuàng)建并運(yùn)行容器

docker run -d --name text -p 8091:8091 -v /opt/java_app_docker/app:/app text
命令解釋如下:

命令 功能
docker run 創(chuàng)建并啟動(dòng)容器
–name 指定一個(gè)容器名稱
-d 后臺(tái)運(yùn)行容器,并返回容器ID
-p 指定端口
user 需要啟動(dòng)的鏡像(名稱+版本)不指定版本默認(rèn)最新版本
-v 掛載目錄到宿主機(jī)
符號(hào)左邊為宿主機(jī),右邊為容器空間

啟動(dòng)完成,查看啟動(dòng)日志:
docker logs -f -t text

ps:
停止容器:
docker stop text
刪除容器:
docker rm text
刪除鏡像:
docker rmi text

6.測試

image.png

這樣的方式啟動(dòng)完成之后,更新服務(wù)時(shí)只需要更換宿主機(jī)/opt/java_app_docker/app目錄下的jar包,然后重啟容器即可實(shí)現(xiàn)更新,省略了每次更新刪除打包創(chuàng)建等過程

7.jdk鏡像部署

首先docker要有jdk的鏡像
然后:
創(chuàng)建并運(yùn)行容器(直接基于jdk鏡像創(chuàng)建容器):
docker run -d --name user -p 8091:8091-v /opt/java_app_docker/app:/app java:8 /usr/bin/java -jar /app/text.jar
或者(啟動(dòng)方式取決于jdk版本)
docker run -d --name user -p 8001:8001 -v /opt/java_app_docker/app:/app openjdk:8 java -jar /app/text.jar
這樣的方式省略了創(chuàng)建Dockerfile并把jar打包成鏡像的操作,無論多少個(gè)服務(wù),只要有jdk鏡像,一條命令搞定!比如現(xiàn)在我需要增加gateway服務(wù),那就把gateway.jar放在任意目錄下,直接執(zhí)行:
docker run -d --name user -p {任意外部端口}:{任意容器端口} -v {你的gateway.jar存放目錄}:/{任意容器內(nèi)目錄名稱} java:8 /usr/bin/java -jar /{任意容器內(nèi)目錄名稱}/gateway.jar
這種方式也是直接替換掛載目錄下jar,然后docker restart 容器ID or 名稱 就行

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容