当前位置: 首页 > 知识库问答 >
问题:

Docker无法从Dockerfile文件夹的外部复制文件[duplicate]

岳枫
2023-03-14

我无法从dockerfile文件夹的外部复制文件。docker compose build出现错误:

failed to compute cache key: failed to walk /var/lib/docker/tmp/buildkit-mount196528245/target: lstat /var/lib/docker/tmp/buildkit-mount196528245/target: no such file or directory
ERROR: Service 'discovery' failed to build : Build failed

文件夹结构

discovery
  -docker
     Dockerfile
  -target
     discovery.jar

这是Dockerfile

FROM openjdk:11
ARG JAR_FILE=../target/discovery.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]

这是我的docker compose文件

services:
discovery:
    build: ./discovery/docker
    ports:
      - 8761:8761

非常感谢你的帮助。

共有2个答案

孟豪
2023-03-14

正如在AKX回答中已经指出的,你不能移出上下文(向上)。我只是想表明,可以通过提供正确的参数来构建你的应用程序。既然你这么说,你就不能离开docker文件夹。

discovery:
  build:
    context: discovery
    Dockerfile: docker/Dockerfile
    args:
      JAR_FILE: target/discovery.jar

关键是使用父目录发现作为上下文,但是使用子目录docker中的Dockerfile。请注意,在使用comush时,这是相对于构建上下文的。

高兴贤
2023-03-14

这是故意的。

Docker构建上下文(与Dockerfile中的指令一起发送到Docker守护程序的tarball)是从运行docker build的目录中计算的。

你需要做的

$ docker build -f docker/Dockerfile

发现中,使用

ARG JAR_FILE=./target/discovery.jar

(不是...)(或传递相应的--build-arg)。

 类似资料:
  • 我正在编写来构建应用程序。我知道您可以使用 (请参见将文件从Docker容器复制到主机),但我只想运行 在Dockerfile中是否有一个命令可以用于从容器中复制到主机中?像的反义词吗?

  • 我正在编写一个Dockerfile来构建一个应用程序。我知道你可以用 (请参阅将文件从Docker容器复制到主机),但我想只运行 并让它将我的创建的构建工件转储到我的主机文件系统的某个地方。 Dockerfile中是否有可以用于从容器复制到主机的命令?与复制相反?

  • 本文向大家介绍Nodejs 复制文件/文件夹的方法,包括了Nodejs 复制文件/文件夹的方法的使用技巧和注意事项,需要的朋友参考一下 1.使用fs复制文件 使用fs对象的readFileSync,writeFileSync方法进行读写操作复制 cp.js 这样就可以复制from.js到to.js 2.使用linux命令复制文件 这里使用了process对象,process对象是一个node的全局

  • 我有一个多模块maven项目,我想为每个模块创建和发布一个映像,除了一个通用的实用程序模块,它是所有其他模块的依赖项。 项目结构如下: 为了构建一个fox示例中的module\u,我需要将common\u module文件夹也复制到容器中,并首先在common文件夹上运行mvn install。如果已经构建好,我可以在模块a

  • 我有一个Windows文件夹结构和文件,如下所示 c:\源文件\file1.txt c:\源文件夹\subfolder1\file2.txt c:\源文件夹\子文件夹2\file3.txt 我想复制所有文件到目标文件夹,如下所示 c:\DestinationFile\file1.txt c:\DestinationFile\file2.txt c:\DestinationFile\file3.tx