如何在Docker中构build和运行Java实例

我正在努力学习Docker的方法。 我想为我的Java应用程序构build一个容器/图像。 Docker文件如下所示:

FROM openjdk:7 COPY . C:/Users/name/Documents/NetBeansProjects/project1/src/mainpckg WORKDIR C:/Users/name/Documents/NetBeansProjects/project1/src/mainpckg RUN javac Main.java CMD java Main 

我这样称呼它:

 docker build -t my-java-app . 

但它给出了以下错误:

 $ docker build -t my-java-app . Sending build context to Docker daemon 3.072 kB Step 1 : FROM openjdk:7 ---> 4a42f05dc422 Step 2 : COPY . C:/Users/name/Documents/NetBeansProjects/project1 /src/mainpckg ---> Using cache ---> 301de702fad9 Step 3 : WORKDIR C:/Users/name/Documents/NetBeansProjects/project1 s/src/mainpckg ---> Using cache ---> 1868e40b329e Step 4 : RUN javac Main.java ---> Running in 66d7d769f425 javac: file not found: Main.java Usage: javac <options> <source files> use -help for a list of possible options The command '/bin/sh -c javac Main.java' returned a non-zero code: 2 

我也尝试了这里给出的解决scheme:

 docker run --rm -v /mypathhere/mycode java:7 sh -c "cd mycode; javac mycode.java" 

但没有任何结果,我仍然有这个错误:

 javac: file not found: Main.java Usage: javac <options> <source files> use -help for a list of possible options 

C:有一些可疑的东西。 尝试以下,它必须工作

 FROM java:8 # add the container directory from the host RUN mkdir /opt/mainpckg # copy the app to container directory ADD . /opt/mainpckg WORKDIR /opt/mainpckg RUN javac Main.java CMD java Main 

我不知道你为什么使用-v /mypathhere/mycode ,因为它会创build一个数据卷 ,它将覆盖(暂时覆盖) /mypathhere/mycode的所有内容。

因此,如果/mypathhere/mycodeC:/Users/name/Documents/NetBeansProjects/project1 (假设您在Windows上使用带有Windows容器的Docker),请尝试运行-v部分,