Dockerfile中的WORKDIR
关键字指的是什么上下文?是在我正在生产的容器内部还是内部运行docker build
的情况下?
我发现自己经常将RUN cd && ...
放入我的docker文件中,希望有另一种方式,感觉好像我丢失了一些东西。
答案 0 :(得分:3)
它在容器内。
参加Dockerfile参考站点https://docs.docker.com/engine/reference/builder/#workdir
WORKDIR指令为Dockerfile中跟在其后的所有RUN,CMD,ENTRYPOINT,COPY和ADD指令设置工作目录。如果WORKDIR不存在,即使以后的Dockerfile指令中未使用它,也将创建它。
因此,您无需添加RUN cd && ...
,就可以做到:
WORKDIR /path/to/dir
RUN command
答案 1 :(得分:1)
function
设置图像内的目录,因此可以避免进行bind
调用。
答案 2 :(得分:1)
所有路径(COPY
和ADD
指令的前半部分除外)均指映像文件系统路径。 COPY
和ADD
的源路径是相对于构建上下文(/
命令末尾的目录)的相对路径(即使它们以docker build
开头),通常包含Dockerfile的目录)。 Dockerfile中的任何内容都无法引用主机或构建上下文树之外的内容上的绝对路径。
这两个Dockerfile之间的唯一区别是第二个命令在其中启动的目录。
RUN cd /dir && command1
RUN command2
WORKDIR /dir
RUN command1
RUN command2