Docker with Java:path RUN javac

时间:2017-05-13 11:57:00

标签: java docker

我在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");
    }
}

当我构建Dockerfile时,我有这个错误:

  

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

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

  • 搬运工-DIR
    • 搬运工-compose.yml
    • Dockerfile
  • SRC
    • 你好

2 个答案:

答案 0 :(得分:1)

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

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

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

为此您的构建容器将是:

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 docker build工作

答案 1 :(得分:0)

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

要复制文件COPYADD,例如:

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