当前位置:首页 > 容器 > docker > 正文内容

Dockerfile COPY 的诡异事件以及解决方案

root11个月前 (03-04)docker289

在制作 docker 镜像时,有复制某一个路径下所有文件和文件夹到镜像的需求,写下了如下 dockerfile:


FROM alpine
COPY ./* /root/

原始目录结构是这样的:

/projects/test_docker_proj
├── Dockerfile
├── dir1
│   ├── dir11
│   │   └── file11
│   └── file1
└── file2

然而复制到 docker 镜像里的目录结构变成了这样:


/root/test_docker_proj
├── Dockerfile
├── dir11
│   └── file11
├── file1
└── file2


可以看到 dir1 这个文件夹并没有被复制到镜像里,但是 dir1 中的子文件夹和文件都被复制进来了,和 dir1 同级的文件也被复制了。也就是说,在 COPY 执行的过程中,第一层文件夹被「解包」了


docker 的 COPY/ADD 在复制文件夹时复制的是其内容

docker 的这种「奇怪」的逻辑已经被诟病许久了,但是似乎还没有要改变的意思


当一个项目中是托管到git上,Dockerfile 必然也是在项目中的

git clone 的时候 Dockerfile 跟项目在同一级,没办法方便的COPY项目文件到docker中

把Dockerfile 移动到上一层又佷不人性化。
绞尽脑汁的解决方案(也不是佷人性化)

FROM alpine
COPY $PWD /root/

这个时候要求docker build 的时候要在Dockerfile的当前路径下



扫描二维码推送至手机访问。

版权声明:本文由一叶知秋发布,如需转载请注明出处。

本文链接:https://zhiqiu.top/?id=223

分享给朋友:
返回列表

上一篇:docker-compose 命令安装

没有最新的文章了...

相关文章

docker - 运行时物理内存最小配置需>=2G

背景最近在某云申请了一个免费试用的云服务器,默认配置是:CPU - 1Core, MEM - 1G, 使用 docker-compose 启动服务组,docker container 反复重启。。。 排查问题使用 docker l...

docker 命令总结

docker status  查看容器运行使用的资源# service 命令的用法$ sudo service docker start# systemctl 命令的用法$ sudo systemctl start docker#...

Docker 入门教程

一、Docker 的安装Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。企业版包含了一些收费服务,个人开发者一般用不到...

docker-compose 命令安装

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname ...

记一次docker问题定位(perf,iostat等性能分析)    记录分析方法

记一次docker问题定位(perf,iostat等性能分析) 记录分析方法

原文链接 背景   最近参与的项目是基于 OpenStack 提供容器管理能力,丰富公司 IaaS 平台的能力。日常主要工作就是在开源的 novadocker 项目(开源社区已停止开发)基础上进行增强,与公司的...

docker-compose 命令

命令选项-f, --file FILE 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定;-p, --project-name NAME 指定项目名称,默认将使用...