我在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”有这样的结构:
答案 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实例中复制文件然后编译它。
要复制文件COPY
或ADD
,例如:
RUN mkdir /src
ADD Hello.java /src/
RUN cd / && javac /src/Hello.java
RUN java -cp /src Hello