【问题标题】:why I can't copy directory to my docker container? [duplicate]为什么我不能将目录复制到我的 docker 容器中? [复制]
【发布时间】:2022-01-03 04:05:23
【问题描述】:

我有自己的目录结构:

+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

【问题讨论】:

  • 是否可以选择安装外部位置?您可以执行docker -v <projectdir>:<containerdir><projectdir> 将在docker 中显示为<containerdir>

标签: docker dockerfile


【解决方案1】:

您要复制的文件应位于 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 &lt;my tag&gt; .

【讨论】:

    【解决方案2】:

    在编译期间使用外部文件/文件夹

    你不能这样做,因为 docker 创建者想要那样做,作为创建者,他们有充分的理由:简单和或安全。

    Docker 在构建时,只会使用与 Dockerfile 相同文件夹中的文件或文件夹。

    有一些解决方法,例如从一个文件夹启动 docker build... 并指定另一个文件夹中的 Dockerfile 的位置。

    查看这些答案以获取更多详细信息:

    不要使用外部文件/文件夹

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

    构建时所需的任何其他依赖项都应由良好的工程设计:

    • 库:在您的情况下是 nodejs/npm 包 publicprivate
    • docker 基础镜像:您可以使用所需的文件/文件夹创建另一个镜像,并将其与FROM acme-base-nodejs 或docker multi-stage 一起使用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-09
      • 1970-01-01
      • 1970-01-01
      • 2020-05-24
      • 2020-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多