如何解决Dockerfile-如何从本地文件夹复制文件?
下面是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-native-product-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映像中?
解决方法
您缺少的关键是构建的上下文,与文档的COPY部分相关:
路径必须在构建上下文中;您无法复制../something / something,因为docker构建的第一步是将上下文目录(和子目录)发送到docker守护程序。
https://docs.docker.com/engine/reference/builder/#copy
此处是“上下文”的描述。
https://docs.docker.com/engine/reference/commandline/build/
但是从本质上讲,当您说“ docker build-with-docker-file”时,COPY只能看到带有Dockerfile的目录中(和下方)的文件。
您可能想做的是在docker构建期间编译“ swagger”,然后将其放在所需的路径中。
要记住的关键一点是,Dockerfile通常是可复制的,因此,如果您在十个不同的主机上运行docker build,则会生成完全相同的映像。从主机上任意位置复制文件不会导致这种情况。
,COPY指令从以下位置复制新文件或目录,并将它们添加到容器的文件系统中。