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到函数目录并运行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
Docker 仅使用上下文目录和子目录,出于安全原因不允许在外部使用任何文件。
您应该使用"."左右向docker显示上下文目录:
cd myproject
docker build -f Demo/Dockerfile .