如何在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/mycode
是C:/Users/name/Documents/NetBeansProjects/project1
(假设您在Windows上使用带有Windows容器的Docker),请尝试运行-v
部分,