Na janela de encaixe, quero fazer o seguinte:
git clone XYZ
cd XYZ
make XYZ
No entanto, como não há comando cd, eu tenho que passar no caminho completo toda vez (make XYZ / fullpath). Alguma boa solução para isso?
Na janela de encaixe, quero fazer o seguinte:
git clone XYZ
cd XYZ
make XYZ
No entanto, como não há comando cd, eu tenho que passar no caminho completo toda vez (make XYZ / fullpath). Alguma boa solução para isso?
Respostas:
Você pode executar um script ou um parâmetro mais complexo para o RUN. Aqui está um exemplo de um Dockerfile que baixei para examinar anteriormente:
RUN cd /opt && unzip treeio.zip && mv treeio-master treeio && \
rm -f treeio.zip && cd treeio && pip install -r requirements.pip
Por causa do uso de '&&', ele só chegará ao comando 'pip install' final se todos os comandos anteriores tiverem sido bem-sucedidos.
De fato, como todo RUN cria uma nova confirmação e (atualmente) uma camada AUFS, se você tiver muitos comandos no Dockerfile, você usará os limites, portanto, mesclar os RUNs (quando o arquivo estiver estável) pode ser muito coisa útil a fazer.
cd
único dura o RUN
comando atual . O próximo RUN
começará a partir do atual WORKDIR
.
Para mudar para outro diretório, use WORKDIR . Todos os comandos RUN, CMD e ENTRYPOINT após o WORKDIR serão executados a partir desse diretório.
RUN git clone XYZ
WORKDIR "/XYZ"
RUN make
RUN git clone http://username:password@url/example.git
WORKDIR /folder
RUN make