簡體   English   中英

使用 dockerfile 中的外部庫編譯和運行 java

[英]Compiling and running java with external libraries in dockerfile

我正在努力使用 docker 編譯和運行 java 文件。 我有文件結構:

./Repo/
   Dockerfile
   ./libs/
      org.json.jar
   ./out/
      Program.class
   ./src/
      Program.java

我的 Dockerfile 看起來像這樣:

FROM java:8-jdk-alpine

COPY /src /src/
COPY /out /out/
COPY /libs /libs/

RUN javac ..
CMD java ..

我希望能夠在使用外部庫的同時將 src 和 output 中的文件編譯出來 我設法做到這一點的唯一方法是首先將 CD 放入 /src/ 並運行以下命令:

javac -d ../out -cp ../libs/org.json.jar Program.java

但是肯定有一種方法可以從 Dockerfile 所在的目錄中執行此操作嗎?

javac -d /out -cp /libs/org.json.jar /out/Program.java

下一個問題是運行上述程序所需的 CMD。 我不知道該怎么寫。

或者我應該將 json lib 復制到編譯程序所在的 out 文件夾並運行以下 CMD:

java -cp "org.json.jar;" Server

您正在嘗試從 /out 路徑而不是 src 編譯 Program.java 文件,這可能是它不起作用的原因。

嘗試這個

RUN javac -d /out -cp /libs/*.jar /src/Program.java

然后您不需要復制文件夾,因為它會在構建容器時創建。 當您運行docker build時,應該編譯


否則嘗試在容器外運行 javac,/out 和 /src 在您的源計算機上不存在,因此您必須在命令中使用相對路徑,然后在 Dockerfile 中復制 out 文件夾並刪除 javac 使用(並切換使用 JRE 圖像)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM