基本方法
java -jar 對應(yīng)的jar包名字
永久后臺方法
有一種叫做“nohup”的命令,該命令可以讓您的應(yīng)用程序在后臺運行,即使您已經(jīng)斷開了與終端的連接也能保持運行狀態(tài)。
nohup 命令的語法為:
nohup command arg1 arg2 ... argN &
?其中,command 是要運行的應(yīng)用程序的命令,arg1、arg2…argN 則是該命令的參數(shù)。& 符號表示在后臺運行該命令。當運行 nohup 命令時,所有的輸出將寫入到 nohup.out 文件中??梢酝ㄟ^檢查這個文件來查看應(yīng)用程序在后臺運行的狀態(tài)和輸出。如果您想要停止應(yīng)用程序,請使用 kill 命令,并指定應(yīng)用程序的進程 ID。
運行jar包的指令
nohup java -jar XXXXXX.jar &
參數(shù)解釋:
????????這個命令將在后臺運行 XXXX.jar 的 Java 應(yīng)用程序,并將輸出寫入 nohup.out 文件中。您可以使用命令“tail -f nohup.out”來查看該文件的內(nèi)容,以檢查應(yīng)用程序正在后臺運行的狀態(tài)和輸出。
tail -f nohup.out
如果想指定日志的位置以及日志文件名稱
nohup java -jar XXXX.jar >> ./log/XXXX.log 2>&1 &
代碼參數(shù)說明:?
在這個命令中,輸出會被重定向到 ./log/XXXX.log 文件中,使用“>>”操作符以追加的方式寫入數(shù)據(jù)。其中“2>&1”表示將標準錯誤輸出(stderr)合并到標準輸出(stdout)中,以便將錯誤信息也寫入同一個日志文件中。
這樣操作可以讓您更好地跟蹤和調(diào)試應(yīng)用程序,并根據(jù)需要對日志進行分析和處理。
日志位置:
如果將日志輸出重定向到指定的日志文件(如 ./XXXX.log),那么日志文件將會在指定的路徑中生成。在本例中,日志文件將生成在當前工作目錄下的 log 目錄中,文件名為 ad.log。
如果沒有指定日志輸出到特定的文件中,而是使用默認的行為,則在運行 nohup 命令時生成的 nohup.out 文件中包含了輸出信息和錯誤信息。nohup.out 文件將生成在運行命令時的當前目錄下。
請注意,日志路徑的實際位置取決于在 nohup 命令中指定的路徑。可以更改路徑,以便生成日志文件的位置適合需求。
停止jar包運行
如果是在 Linux 操作系統(tǒng)上使用 nohup java -jar XXXX.jar & 運行的 jar 包,您可以使用以下命令來查看該進程:根據(jù)jar包名來查找運行的jar包
ps -ef | grep XXXXXX.jar
根據(jù)端口號來查找運行的jar包
ps -ef | grep <端口號>
這會顯示一個包含進程信息的列表,其中包括進程 ID(PID),您可以使用此 ID 殺死進程:
kill
請注意,使用 kill 命令強制終止一個進程可能會導(dǎo)致數(shù)據(jù)損壞或其他意外的結(jié)果,因此請在確保沒有正在進行重要操作的情況下使用此命令。
jar包部署docker容器中
思路:
? ? ? ? 1、通過數(shù)據(jù)卷的方式將docker容器中的指定文件夾掛載到宿主機上,更新jar包只上傳到宿主機的指定路徑就可以。
? ? ? ? 2、利用腳本bash文件來運行構(gòu)建jar包,并構(gòu)建該bash的鏡像,代替直接運行jar包的鏡像。利于鏡像與jar包之間的關(guān)系健康
準備工作
1、在宿主機中創(chuàng)建存放docker配置文件,jar包的文件夾
在宿主機上,創(chuàng)建文件夾: 可以自己指定路徑 ,用于存放bash文件和jar包。然后在該文件夾下面,創(chuàng)建一個bash文件和容器的配置文件。
2、創(chuàng)建bash文件
首先要看清楚自己現(xiàn)在所在的路徑是否正確,這是我存放的位置。
?在app的文件路徑下創(chuàng)建腳本
vi run.sh
下面的是run.sh文件中的內(nèi)容?
java -jar /usr/data/XXXX.jar
方法說明:
?????????/usr/data是docker容器內(nèi)的路徑。
這是docker自己管理的,我們不需要真的到docker容器內(nèi)創(chuàng)建這個路徑。
后面會將此路徑掛載到當前文件夾:/usr/local/docker/app。這個腳本就是運行在docker容器中的/usr/data下面的指定jar包。
現(xiàn)在肯定有人疑惑,現(xiàn)在的jar包怎么來。或者說現(xiàn)在還沒jar包,別急后面我們要掛載數(shù)據(jù)卷,數(shù)據(jù)卷中的jar包會同步到容器中去。現(xiàn)在是準備工作。
3、創(chuàng)建容器配置文件
創(chuàng)建一個dockerfile的配置文件,這個很重要再次強調(diào)這個文件一定是要在你的文件路徑下的,和你的jar包位置在一起。因為這個文件一會要涉及到鏡像的生成。
vi Dockerfile
?這個是dockerfile文件中的內(nèi)容
FROM openjdk:8-jdk-alpine
EXPOSE 需要映射的端口號
ENTRYPOINT ["sh","/usr/data/run.sh"]
?代碼說明:
這段代碼是一個 Dockerfile,用于在 Docker 容器中啟動一個基于 openjdk:8-jdk-alpine 鏡像的 Java 應(yīng)用。各行代碼的解釋如下:
- FROM openjdk:8-jdk-alpine:表示此 Dockerfile 基于 openjdk:8-jdk-alpine 鏡像構(gòu)建。
- EXPOSE XXXX:指定容器將監(jiān)聽的端口號
- ENTRYPOINT ["sh","/usr/data/run.sh"]:指定容器啟動時的命令,即在容器內(nèi)運行 /usr/data/run.sh 腳本。sh 是指定命令使用的 shell,因為 /usr/data/run.sh 可能需要 shell 解析才能正確執(zhí)行。ENTRYPOINT 與 CMD 功能相似,但其中指定的命令會被視為不可替代的執(zhí)行文件,CMD 會被視為 ENTRYPOINT 的參數(shù)。
- 通過“sh”來說明在啟動的時候使用sh腳本文件,后面的第二個參數(shù)對腳本的位置進行了補充保證執(zhí)行的時候可以正確的找到位置。
- /usr/data/run.sh:是一個腳本文件路徑,用于啟動 Java 應(yīng)用。
構(gòu)建鏡像
還是在當前文件夾下面開始構(gòu)建對象,一定要注意最后一個 點 ‘ .?’?表示dockerfile文件在當前目錄下面。這很重要
docker build -t 給鏡像命名:版本號 .
舉例說明
docker build -t app:1.0.0 .
請在命名的時候使用 'name:tag'的格式來給鏡像命名。
創(chuàng)建容器并運行
docker run -d -it --name=myapp -p XXXX:XXXX -v /usr/local/docker/app:/usr/data app:1.0.0
參數(shù)說明:
? ? ? ? 重點:
? ? ? ? --name :是我們的容器的名稱
? ? ? ? -p XXXX:XXXX:是要將主機的端口號映射到docker這個容器的端口號上去
? ? ? ? -v 掛載數(shù)據(jù)卷 前面的路徑是我們自己設(shè)置的路徑 后面的路徑是docker容器中的路徑
? ? ? ? 最后是我們運行的容器的名字以及版本號文章來源:http://www.zghlxwxcb.cn/news/detail-495411.html
如果需要在docker重啟后自動運行的話(開機自啟動)文章來源地址http://www.zghlxwxcb.cn/news/detail-495411.html
docker run --restart=always -d -it --name=myapp -p XXXX:XXXX -v /usr/local/docker/app:/usr/data app:1.0.0
到了這里,關(guān)于部署運行jar包方法全解docker鏡像打包部署等的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!