2013-12-17 88 views
82

在泊坞窗我想这样做:泊坞窗:更改目录命令

git clone XYZ 
cd XYZ 
make XYZ 

但是因为没有cd命令,我必须在完整路径每次通过(使XYZ/FULLPATH)。任何好的解决方案呢?

+0

相关:http://stackoverflow.com/questions/17891669/docker-command-fails-during-build-but-succeeds-while-executed-within-running-co – trcarden

+2

WORKDIR命令注意作为一种可能的解决方法 – trcarden

+0

不是一个解决方法,这是推荐的解决方案https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#workdir –

回答

54

您可以为RUN运行脚本或更复杂的参数。下面是从Dockerfile我已经下载了看前面的例子:

RUN cd /opt && unzip treeio.zip && mv treeio-master treeio && \ 
    rm -f treeio.zip && cd treeio && pip install -r requirements.pip 

由于采用了“& &”的,它只会得到最后的“PIP安装”命令,如果所有的以前的命令已成功。实际上,由于每个RUN都会创建一个新的提交&(当前)AUFS层,如果Dockerfile中有太多的命令,那么您将用尽限制,因此合并RUN(文件稳定时)可以是一件非常有用的事情。

+6

如果你想知道,效果'cd'只能用于当前的'RUN'命令。下一个'RUN'将从当前的'WORKDIR'开始。 – Ritchie

234

要更改到另一个目录,请使用WORKDIR。 WORKDIR之后的所有RUN,CMD和ENTRYPOINT命令将从该目录执行。

RUN git clone XYZ 
WORKDIR "/XYZ" 
RUN make 
+12

使用WORKDIR也被引用为[dockerfile最佳实践](https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#workdir) –

+2

我相信这是一个更合适的答案题 – purpletentacle