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

为什么我不能将目录复制到docker容器?[重复]

颜修为
2023-03-14

我有自己的目录结构:

+projects
    +project_1
    +project_2

+node
    +container_1
        -Dockerfile

在我的Dockerfile中,我将project_1复制到/var/www/project_1目录,但不幸的是,它没有被复制:

#Dockerfile

FROM node:17
WORKDIR /var/www/project_1
COPY ../../projects/project_1 /var/www/project_1
RUN npm install
CMD ["npm","run","start:dev"]

错误:

 => ERROR [3/4] COPY ../../projects/project_1 /var/www/project_1                                                                                                                                                                                                               0.0s
------
 > [3/4] COPY ../../projects/project_1 /var/www/project_1:
------
failed to solve: rpc error: code = Unknown desc = failed to compute cache key: "/projects/project_1" not found: not found

共有2个答案

徐博雅
2023-03-14
匿名用户

你不能这样做,因为docker创建者希望这样做,作为创建者,他们有很好的理由:简单和或安全。

Docker在构建时将只处理Dockerfile的同一文件夹中的文件或文件夹。

有一些变通方法,比如启动docker build ,并指定Dockerfile在另一个文件夹中的位置。

检查这些答案以获得更多细节:

  • https://stackoverflow.com/a/53298876/3957754
  • https://stackoverflow.com/a/24540011/3957754

在构建时,您不应该依赖于外部文件夹或文件。您必须只需要一个带有一个应用程序源代码的git存储库。这是常见的,广泛使用的,并且与devops兼容。

构建时所需的任何其他依赖性,应由良好的工程部负责:

  • 库:在您的情况下,一个nodejs/npm包是公共的还是私有的
  • docker基础映像:您可以创建另一个映像所需的文件/文件夹,并使用它继承从acme-base nodejs或在docker多级

冷吉星
2023-03-14

要复制的文件应位于Dockerfile目录内,而不是外部(例如父目录)。

+projects
    +project_1
    +project_2

+node
    +container_1
+Dockerfile  # <-- move your Dockerfile to your project root.

更新Dockerfile中的文件位置:

...
COPY ./projects/project_1 /var/www/project_1
...

构建将在项目根运行时成功:

docker build-t

 类似资料:
  • 我想建立一个Docker图像,包括我的自定义Powershell模块。因此,我使用Microsofts图像,我想从这里创建我自己的图像,其中包括我的psm1文件。 我想把C:\temp\someDirectory中包含的文件复制到docker linux容器中。在构建映像时,我得到以下错误: C:\temp\docker_posh>docker build--rm-f dockerfile-t d

  • 当我用- 我可以通过使用- 我可以看到它位于那里和文件是预期的在终端。

  • 问题内容: 我有一个目录/ a / b / c,其中包含文件和子目录。我需要将/ a / b / c / *复制到/ x / y / z目录中。我可以使用哪些python方法? 我试过了,但是python尝试创建/ x / y / z并引发一个。 问题答案: 我发现此代码有效: 参考: Python 2:https://docs.python.org/2/distutils/apiref.html

  • 我有下面的代码。似乎我不能将类的超类对象放入类型为集合的容器中

  • 我需要在Go中复制一个切片,并读取文档。有一个复制功能可供我使用。 copy内置函数将元素从源片复制到目标片。(作为一种特殊情况,它还会将字节从字符串复制到字节片。)源和目标可能重叠。Copy返回复制的元素数,它是len(src)和len(dst)中的最小值。 但当我这样做的时候: 我的和以前一样是空的(我甚至尝试使用): 你可以去游乐场看看。那么为什么我不能复制一个切片呢?

  • 我正在考虑使用Docker在持续集成(CI)服务器上构建我的依赖项,这样我就不必在代理本身上安装所有的运行时和库。 为了实现这一点,我需要将在容器中构建的构建构件复制回主机中。有可能吗?