docker-執行JavaWeb服務(jar包)

一只爱阅读的程序员發表於2024-03-26

環境說明

linux系統版本:lsb_release -a

docker 版本: docker -v

不同的作業系統以及軟體版本,可能會遇到不一樣的問題,一定要注意版本問題。

檢視dockermysql的版本,可以去官網,需要kx上網才能開啟。

https://hub.docker.com/

最好是確認自己的伺服器已經設定阿里雲的映象加速,或者使用騰訊的,網易的都是可以的。

自己選,設定之後下載映象的速度回快很多。

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

"registry-mirrors": ["https://registry-vpc.cn-hangzhou.aliyuncs.com"]

}

EOF

檢視自己的windows電腦上面安裝的jdk版本,為JDK1.8,因此拉取的Java映象服務也最好是JDK1.8的版本。

然後去官網查詢對應的映象資源。

建議最好選擇官方的映象,避免出現一些奇奇怪怪的問題。

由於JDK8現在開始收費,因此只能使用OpenJDK的映象。

.1.拉取Java映象.

docker pull java:openjdk-8

執行時報錯

接著把名字更換為openjdk:8 ,映象下載成功。

.2.執行java容器。

.a.先建立一個Java目錄.

.b.在本地準備一個可執行的jar包,並且在本地可以正確訪問。

.c.jar包上傳到伺服器上,使用Java映象啟動服務。

啟動服務,命令如下

docker run -d -p 8081:8081 -v /opt/u01/exam/java/WebBackend.jar:/project/WebBackend.jar \

--name exam openjdk:8 \

java -jar /project/WebBackend.jar

或者下面的命令

docker run -d -p 8081:8081 -v /opt/u01/exam/java:/project \

--name exam openjdk:8 \

java -jar /project/WebBackend.jar

引數說明:

docker run 表示執行docker 容器

-d 表示以後臺模式執行

-p 8081:8081 表示將宿主機上的8081埠對映到java容器中的8081

-v /opt/u01/exam/java/WebBackend.jar:/project/WebBackend.jar 表示將宿主機上的jar包檔案掛載到Java容器中

-v /opt/u01/exam/java:/project 表示將宿主機上的路徑掛載到Java容器中

--name exam 表示給容器服務取一個名稱

openjdk:8 表示映象名,使用映象ID同樣可以

java -jar /project/WebBackend.jar 表示jar包的啟動命令,注意路徑是java容器中的路徑。

建議:直接掛載路徑比較好,因為執行JavaWeb服務時,還需要列印日誌。

檢視JDK版本

docker exec -it 容器名或者ID /bin/bash

.d.登入阿里雲伺服器開啟8081埠。

控制檯-->我的資源-->點選(例項)進入-->安全組-->安全組詳情-->手動新增(入站規則) ,如下圖所示

.3.訪問測試。

訪問成功。

補充:關於日誌路徑的配置。

自己使用的是logback列印日誌,簡單配置示例如下。

執行服務後,就會自動生成日誌目錄和日誌,並且同樣可以使用 taif -f 日誌檔名 動態地檢視日誌

到此,使用docker 部署jar包並檢視日誌全部完成。

遇到的問題:docker 貌似不能單獨部署一個java容器,需要執行具體的服務,比如執行一個Java檔案,

啟動一個JavaWeb服務等等。有知道的技術大佬歡迎指教!

參考博文

https://juejin.cn/post/7249647793898586172

https://blog.csdn.net/weixin_43471518/article/details/126541339

https://juejin.cn/post/6844904167920975886

https://hub.docker.com/_/java/tags?page=1&ordering=last_updated&name=openjdk-8

相關文章