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