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

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

root2年前 (2022-03-04)docker542

在制作 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日志大小

1、修改docker配置文件,vim /etc/docker/daemon.json{"log-driver":"json-file","log-opts": {"max...

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

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

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

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

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

docker-compose文件配置端口未生效,并报错

使用docker-compose搭建服务,映射2222:22端口的时候出现问题:Cannot create container for service test: invalid port specification:"13334...

进入docker 的命令 以及强制修改docker时间

docker exec -it 1e33b26152e1 /bin/shordocker exec -it 1e33b26152e1 bashordocker exec -it 1e33b26152e1 sh修改docker时间,其实就是把...

Docker 入门教程

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