我正在尝试使用javadocker中实现Dockerfile

FROM openjdk:7
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
RUN javac welcome.java
CMD [ "java" , "welcome" ]

当我赞扬WORKDIR并准备了构建命令时,出现以下错误



是什么原因呢?

最佳答案

WORKDIR是您登录时容器将使用的默认目录(以及Dockerfile中任何后续relevent命令的基本目录,请参阅documentation以获取更多信息)。

如果您将其注释掉,则容器将使用基本镜像中定义的WORKDIR。由于openjdk:7没有定义一个(可以使用docker inspect openjdk:7 | jq '.[0].WorkingDir'进行检查),因此默认的WORKDIR/
在Dockerfile中,将当前dev目录的内容复制到容器内的/usr/src/myapp中。您用于编译文件的命令使用相对路径。

由于您删除了WORKDIR定义,因此javac现在正在当前目录welcome.java中查找文件/,并且该文件不存在。

因此,要么保留WORKDIR定义,要么在RUN CMD定义中使用绝对路径作为类路径:

RUN javac /usr/src/myapp/welcome.java
CMD ["java", "-classpath", "/usr/src/myapp", "welcome"]

关于docker - 在Dockerfile中推荐WORKDIR时出错,这是什么原因?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59528723/

10-09 18:56