Docker构建“无此文件或目录”错误

时间:2019-12-12 08:55:03

标签: docker build dockerfile docker-build


RUN adduser -D appUser

RUN mkdir /usr/share/app

RUN mkdir /logs

ADD Function/target/foo.jar /usr/share/app

WORKDIR /usr/share/app

RUN chown -R  appUser /usr/share/app

RUN chown -R  appUser /logs

USER appUser

EXPOSE 8080

ENTRYPOINT ["java", "-jar",  "foo.jar"]`

我有一个奇怪的问题,我似乎无法解决。

我的根文件夹包含两个目录(均带有子目录)“ Demo / Dockerfile ”和“ Function / target / foo.jar

我的Dockerfile中有一个复制命令,内容为

COPY Function/target/foo.bar /usr/share/app

但是当我从根文件夹运行docker build -f Demo/Dockerfile时,出现错误

stat /var/lib/docker/tmp/docker-builder238823934/Function/target/foo.jar: no such file or directory

我发现这有点奇怪,因为当我编辑复制命令以读取COPY /target/foo.bar /usr/share/app之后,我进入 Function 目录并运行 docker build -f ../Demo/Dockerfile

它构建成功,或者如果我编辑Dockerfile以读取COPY foo.bar /usr/share/app,然后将其cd进入目标目录并运行docker build -f ../../Demo/Dockerfile,这也可以工作。

有这种行为的解释吗?

这是我的 dockerignore 文件的外观



!**/Dockerfile


!DockerServiceDescription/**


!Function/target/*.war


!server.xml


!tomcat-users.xml

1 个答案:

答案 0 :(得分:2)

Docker仅使用上下文目录和子级,出于安全原因,不允许使用外部任何文件。

您应使用'。'向docker显示上下文目录。大约:

cd myproject
docker build -f Demo/Dockerfile .