【2分钟知识点】Dockerfile 不再使用 cd 之 WORKDIR
问题
在 Dockerfile 的指令中,有一个WORKDIR
指令,我们知道它是用来设置工作目录的,但常年使用的 cd
一样好用。反正只是切换个路径,看起来也无伤大雅,对吧。
我们真的理解 WORKDIR
指令吗?
1 | # Dockerfile with cd |
1 | # Dockerfile with WORKDIR |
WORKDIR
(1) 能创建不存在的路径
WORKDIR
可以和 cd
起到同样的作用,并且更好的是在切换路径的同时如果目录不存在会自行创建。
设置 WORKDIR
后的操作都会基于这个路径,同时它也可以基于相对路径不断切换 。
1 | WORKDIR /a |
输出结果会是 /a/b/c
(2) 可以使用环境变量
WORKDIR
还可以搭配环境变量使用
1 | ENV DIRPATH /path |
输出结果会是 /path/$DIRNAME
总结
从官方的建议来看,我们始终应该设置项目的 WORKDIR
,而不是使用 RUN cd ... && doxxx
, 让 Docker 构建更易理解和维护。
扩展问题:COPY
和 ADD
有什么区别?
参考资料
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 李璐慧的个人网站 - Aloea's Personal Website!
评论