【问题标题】:Docker build "no such file or directory" errorDocker构建“没有这样的文件或目录”错误
【发布时间】:2020-04-05 14:57:46
【问题描述】:

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 然后我 cd 进入 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

【问题讨论】:

  • 包括你的 Dockerfile,这样的文章对任何人都没有帮助。
  • 我已经添加了 Dockerfile 和 dockerignore 文件
  • 似乎 Steins 博士的回答是正确的,它只能从目录本身及其子目录中找到文件。我已经删除了我的答案。如果您从根目录构建 docker 映像,那么它将能够找到 /Function。看到这个帖子:stackoverflow.com/questions/24537340/…

标签: docker build dockerfile docker-build


【解决方案1】:

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

您应该使用 '.' 向 docker 显示上下文目录左右:

cd myproject
docker build -f Demo/Dockerfile . 

【讨论】:

    猜你喜欢
    • 2021-10-08
    • 2017-09-09
    • 2017-12-15
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 2014-06-22
    • 1970-01-01
    相关资源
    最近更新 更多