一直以来都把 ADD 当 COPY 来用的,因为一般情况下两者情况差不多,但是最近发现大错特错了。
ADD 除了复制功能,还在还提供两种附加功能解压和下载
这是比较奇怪的两个特性,也是因为这样 ADD
变得有点意向不明的意思。
1 | ADD Python-3.7.9.tar.xz /root |
执行上面的命令后,Python-3.7.9.tar.xz
会自动解压缩到 /root
目录下
这个看似很方便的功能,当你不了解时,反而给调试带来很大的苦恼。
然后就是下载功能,下面的语句可以直接把文件下载到 /root
中
1 | ADD https://npm.taobao.org/mirrors/python/3.7.9/Python-3.7.9.tar.xz /root |
这个功能最大的问题时,它不能被缓存,每次都要重新执行,只是在镜像中没有 curl
或者 wget
时倒是挺方便的。
这些功能虽然在某些情况下看上去挺“方便”,然而我们大部分的需求就是复制文件
所以复制文件优先推荐使用 COPY
语句
需要注意的是缓存的使用
1 | COPY . /root |
当直接复制目录时,有任何文件的变动都会导致上次的缓存失效,所以不是必要的情况,优先推荐使用指定文件全路径进行复制
最近热读
扫码关注公众号,或搜索公众号“温欣爸比”
及时获取我的最新文章