javac:在Dockerfile中找不到文件错误

我正在尝试为java应用程序构build一个docker镜像。 我在dockerfile中完成了以下工作:

FROM java:8 RUN javac HelloDocker.java CMD ["java","HelloDocker"] 

当我正在尝试构build映像时,它将抛出以下exception: javac: file not found: HelloDocker.java HelloDocker.java文件和Dockerfile位于同一目录中。 另外,当我试图单独编译java文件(通过javac HelloDocker.java),它没有抛出任何错误。

您正在使用已弃用的图片。 你应该使用openjdk图像。 见下面

https://hub.docker.com/_/openjdk/

你也需要javac所以你应该使用jdk标签而不是jre标签。

所以试试openjdk:8-jdk

编辑-1

还需要复制Dockerfile中的文件。 当你使用docker build . ,那么当前目录文件作为上下文可用,但它们不在图像内

 FROM java:8 WORKDIR /app COPY HelloDocker.java . RUN javac HelloDocker.java CMD ["java","HelloDocker"] 

假设这是完整的Dockerfile,则需要在Docker镜像的文件系统中有一个名为HelloDocker.java的文件,然后才能使用“RUN javac HelloDocker.java”编译文件。 您可以使用docker COPY / ADD命令将文件从主机的文件系统复制到docker镜像。