为什么我不能将目录复制到我的 docker 容器?
why I can't copy directory to my docker container?
我有自己的目录结构:
+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
编译期间使用外部files/folders
你不能这样做 因为 docker 创作者希望那样做,作为创作者,他们有充分的理由:简单性和/或安全性。
Docker 在构建时,将只处理与 Docker 文件位于同一文件夹中的文件或文件夹。
有一些解决方法,例如从一个文件夹启动 docker build...
并指定另一个文件夹中 Docker 文件的位置。
检查这些答案以获取更多详细信息:
不要使用外部 files/folders
在构建时,您不应依赖外部文件夹或文件。您必须只需要一个包含一个应用程序源代码的 git 存储库。这是常见的、广泛使用的并且与 devops 兼容。
构建时所需的任何其他依赖项,应由良好的工程设计:
- 图书馆:在你的例子中是一个nodejs/npm包public or private
- docker 基本图像:您可以使用必需的 files/folder 创建另一个图像,并使用它继承
FROM acme-base-nodejs
或 docker multi-stage
您要复制的文件应位于 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 <my tag> .
我有自己的目录结构:
+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
编译期间使用外部files/folders
你不能这样做 因为 docker 创作者希望那样做,作为创作者,他们有充分的理由:简单性和/或安全性。
Docker 在构建时,将只处理与 Docker 文件位于同一文件夹中的文件或文件夹。
有一些解决方法,例如从一个文件夹启动 docker build...
并指定另一个文件夹中 Docker 文件的位置。
检查这些答案以获取更多详细信息:
不要使用外部 files/folders
在构建时,您不应依赖外部文件夹或文件。您必须只需要一个包含一个应用程序源代码的 git 存储库。这是常见的、广泛使用的并且与 devops 兼容。
构建时所需的任何其他依赖项,应由良好的工程设计:
- 图书馆:在你的例子中是一个nodejs/npm包public or private
- docker 基本图像:您可以使用必需的 files/folder 创建另一个图像,并使用它继承
FROM acme-base-nodejs
或 docker multi-stage
您要复制的文件应位于 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 <my tag> .