【问题标题】:COPY failed: stat : no such file or directory复制失败:stat:没有这样的文件或目录
【发布时间】:2020-09-30 09:07:51
【问题描述】:

我是 docker 新手。我有一个 Maven 包装器,它构建了我的应用程序并将可部署文件复制到新文件夹中,然后运行它。我收到此错误。

复制失败:stat /var/lib/docker/tmp/docker-builder102689450/app/q-runner/target/q-runner-0.0.1-runner.jar:没有这样的文件或目录

当我提到从/app/复制时,为什么要在上面的位置搜索文件。

我的 docker 文件是

 # docker build -f Dockerfile.build -t abc/notify-build .
    
    FROM adoptopenjdk/openjdk14:ubi 
    
    WORKDIR /app
    
    COPY ./ /app
    
    
    RUN chmod +x ./mvnw && \
    ./mvnw package
    
    
    ENV JAVA_OPTIONS=-Dquarkus.http.host=0.0.0.0
    
    COPY /app/target/*-runner.jar /deployments/app.jar
    
    CMD java -jar /deployments/app.jar

【问题讨论】:

  • 错误消息中显示的位置是 docker build 上下文,即从您的 docker build <context> 命令创建的位置。您不能复制上下文之外的任何内容。从上下文根中搜索复制命令中以/ 开头的任何源。您不能使用 ../../../app/ 之类的东西导航出上下文,这会引发错误。
  • 感谢您的意见。我花了一些时间了解构建上下文。我现在已经解决了这个问题。请检查答案

标签: docker dockerfile


【解决方案1】:

我已将其更改为两阶段构建并解决了它

#stage1
FROM adoptopenjdk/openjdk14:ubi as builder

RUN mkdir build
COPY . /build
WORKDIR /build

RUN chmod +x ./mvnw && \
./mvnw package

#stage2
FROM adoptopenjdk/openjdk14:ubi

COPY --from=builder /build/q-runner/target/lib/* /deployments/lib/

COPY --from=builder /build/q-runner/target/*-runner.jar /deployments/app.jar

ENV JAVA_OPTIONS=-Dquarkus.http.host=0.0.0.0

CMD java -jar /deployments/app.jar

【讨论】:

    猜你喜欢
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    相关资源
    最近更新 更多