docker執行javaWeb服務,操作檔案異常

一只爱阅读的程序员發表於2024-04-05

一、問題由來

  部署一個測試服務在自己的伺服器上面,然後執行其中的一個功能。然後報錯,報錯資訊如下

二、問題分析

  自己一開始也很疑惑,怎麼會出現這個問題呢,自己明明把對應的檔案放在對應的目錄下面,並且已經解壓。

如果所示,理論上來說不應該啊。可是程式執行的時候,確確實實地出現了該問題。經過自己仔細分析,發現容器

中的環境和linux伺服器上面的環境是不一樣的。自己在Linux伺服器上面建立得有對應的目錄,可是在容器中不一定會有該目錄,

容器時一個獨立的環境。

三、解決方案

  自己在對應的目錄下面建立一個新的目錄,將之前的檔案全部移動到當前目錄下來。然後使用路徑掛載的方式,將當前這個目錄

中的檔案掛載到容器中,這樣就可以解決這個問題,如下圖所示,

然後設定配置檔案中的掛載路徑如下,

啟動專案時命令如下,使用路徑掛載,

docker run -d -p 8081:8081-v /opt/u01/exam/java:/project -e JVM_XMS=256m -e JVM_XMX=256m \

--name webbackend openjdk:8 \

java -jar /project/WebBackend.jar

引數解釋

-e JVM_XMS=256m 表示啟動時的記憶體

-e JVM_XMX=256m 表示執行時的最大記憶體

啟動之後,記憶體也還比較富餘,不至於讓伺服器記憶體掛掉。

最終測試效果如下。

下載的檔案示例如下。

總結:使用docker執行服務時,一定要注意伺服器上面的環境和容器內的環境是不一樣的,因此

在使用帶有路徑的各種操作時,一定需要特別注意路徑如何掛載的問題!!!

相關文章