Dockerfile-如何从本地文件夹复制文件?

Dockerfile-如何从本地文件夹复制文件?,docker,dockerfile,docker-volume,Docker,Dockerfile,Docker Volume,下面是Dockerfile: FROM golang:1.14.10 MAINTAINER xyz COPY ~/go/bin/product-api /go/bin/product-api COPY ~/go/bin/swagger /go/bin/swagger ENTRYPOINT ["/go/bin/product-api"] 在docker build-t cloud本机产品api:1.0.0.上,给出错误: Step 3/5 : COPY ~/go/bi

下面是
Dockerfile

FROM golang:1.14.10
MAINTAINER xyz

COPY ~/go/bin/product-api /go/bin/product-api

COPY ~/go/bin/swagger /go/bin/swagger

ENTRYPOINT ["/go/bin/product-api"]

在docker build-t cloud本机产品api:1.0.0.上,给出错误:

Step 3/5 : COPY ~/go/bin/product-api /go/bin/product-api
COPY failed: stat /var/lib/docker/tmp/docker-builder398080099/~/go/bin/product-api: no such file or directory

我认为映像构建过程将
/var/lib/docker/tmp/docker-builder398080099
作为工作区,并从该路径引用

如何将文件从本地计算机的特定文件夹复制到Docker映像

该指令从中复制新文件或目录,并将它们添加到路径处容器的文件系统中


您缺少的关键内容是与文档副本部分相关的构建上下文:

路径必须在构建的上下文中;您不能复制../something/something,因为docker构建的第一步是将上下文目录(和子目录)发送到docker守护进程

这里描述“上下文”

但从本质上讲,当您说“docker build directory with docker file”时,COPY只会看到包含docker文件的目录中(及其下)的文件

您可能想做的是在docker构建期间编译“swagger”,然后将其放入您想要的路径中


需要记住的一点是docker文件通常是可复制的,因此如果在十台不同的主机上运行docker build,将生成完全相同的映像。从主机上的任意位置复制文件不会导致这种情况。

如果要实现这一点,您需要使用卷,这里有更多信息-@nishkaush我想,卷主要用于docker容器。第一次,我在构建映像时遇到了卷的用法。您需要在
docker build
命令(可能是
docker build~/go
)中指定一些目录,其中包含需要复制的所有文件;Dockerfile需要位于该目录(或目录树,带有
-f
选项)中,并且它只能使用相对路径。您所说的是正确的,我将复制源代码并生成