Docker与Java:pathRUN javac

我在Dockerfile中遇到RUN javac的问题:

Dockerfile:

FROM jboss/wildfly RUN javac ../src/Hello.java RUN java -cp ../src Hello 

Hello.java

 public class Hello { public static void main(String[] args) { System.out.println("Hello, World"); } } 

当我构buildDockerfile时,我有这个错误:

javac:找不到文件:../src/Hello.java

我的项目“HelloWorld”有这样的结构:

  • 泊坞窗-DIR
    • 泊坞窗,compose.yml
    • Dockerfile
  • SRC
    • 你好

RUN命令只能在容器的文件系统上运行,而不能在主机上运行。 您必须将文件从本地文件系统复制到容器的文件系统:

 FROM jboss/wildfly COPY src /src RUN javac /src/Hello.java 

许多开发人员发现他们想将构build容器与运行容器分开。 运行软件的容器通常比构build容器对环境的要求要低很多(例如,没有安装JDK,只有JRE)。

为此,您的构build容器将是:

 FROM openjdk:8 COPY src /src RUN javac /src/Hello.java RUN docker build -t foo . && docker push foo 

你的运行容器将会是

 FROM jboss/wildfly RUN java /src/Hello 

请记住在/var/lib/docker.sock装入/var/lib/docker.sock docker build来工作

你首先要复制docker实例中的文件,然后编译它。

要复制文件COPYADD ,例如:

 RUN mkdir /src ADD Hello.java /src/ RUN cd / && javac /src/Hello.java RUN java -cp /src Hello