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

标签 docker dockerfile docker-volume

这个问题在这里已经有了答案:





How to include files outside of Docker's build context?

(17 个回答)


12 个月前关闭。




以下是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 部分相关:
路径必须在构建的上下文中;您不能 COPY ../something/something,因为 docker 构建的第一步是将上下文目录(和子目录)发送到 docker 守护进程。
https://docs.docker.com/engine/reference/builder/#copy
此处对“上下文”的描述。
https://docs.docker.com/engine/reference/commandline/build/
但本质上,当您说“docker build directory-with-docker-file”时,COPY 只会看到包含 Dockerfile 的目录中(及下方)的文件。
您可能想要做的是在 docker build 期间编译“swagger”,然后将其放在您想要的路径中。
要记住的一个关键点是,Dockerfile 通常是可复制的,这样如果您在十个不同的主机上运行 docker build,将生成完全相同的图像。从主机上的任意位置复制文件不会导致这种情况。

关于Dockerfile - 如何从本地文件夹复制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64410123/

相关文章:

docker - 来自主机的Docker访问容器日志

docker - 在构建 docker 容器时在已挂载的卷上创建文件

Docker-compose 卷 : persistant, 但在哪里?

docker - 当运行 JVM 的 docker 容器达到内存限制时会发生什么?

spring-boot - 如何将Redis运行到多阶段Docker镜像构建中?

php - Docker php-fpm 作为 www-data 运行

docker - 在Ubuntu 16.04中创建Marklogic Docker实例以暴露端口

docker - 如何使用 docker-compose 在容器和主机之间同步代码?

docker - docker sed arg变量未使用