我在 Dockerfile 中运行 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: file not found: ../src/Hello.java
我的项目“HelloWorld”具有以下结构:
- docker 目录
- docker-compose.yml
- Dockerfile
- 源代码
- 你好
最佳答案
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
工作
关于java - 使用 Java 的 Docker : path RUN javac,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43952866/