【发布时间】: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