一、問題由來
部署一個測試服務在自己的伺服器上面,然後執行其中的一個功能。然後報錯,報錯資訊如下
二、問題分析
自己一開始也很疑惑,怎麼會出現這個問題呢,自己明明把對應的檔案放在對應的目錄下面,並且已經解壓。
如果所示,理論上來說不應該啊。可是程式執行的時候,確確實實地出現了該問題。經過自己仔細分析,發現容器
中的環境和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執行服務時,一定要注意伺服器上面的環境和容器內的環境是不一樣的,因此
在使用帶有路徑的各種操作時,一定需要特別注意路徑如何掛載的問題!!!