El siguiente Dockerfile:
DESDE ubuntu: 12.10 EJECUTAR mkdir tmp123 EJECUTAR cd tmp123 EJECUTAR pwd
tiene la salida:
Cargando context 10240 bytes Paso 1: DESDE ubuntu: 12.10 ---> b750fe79269d Paso 2: EJECUTAR mkdir tmp123 ---> Corriendo en d2afac8a11b0 ---> 51e2bbbb5513 Paso 3: ejecutar cd tmp123 ---> Corriendo en 4762147b207c ---> 644801121b92 Paso 4: EJECUTAR pwd ---> Ejecutando en 3ed1c0f1049d / ---> eee62a068585
cuando se construye (command docker build)
parece que RUN cd tmp123 no tiene efecto
por qué ?
En realidad se espera.
Un dockerfile no es más que un contenedor de Docker run + docker commit.
FROM ubuntu:12.10 RUN mkdir tmp123 RUN cd tmp123 RUN pwd
Es lo mismo que hacer:
CID=$(docker run ubuntu:12.10 mkdir tmp123); ID=$(docker commit $CID) CID=$(docker run $ID cd tmp123); ID=$(docker commit $CID) CID=$(docker run $ID pwd); ID=$(docker commit $CID)
Cada vez que ejecuta, genera un nuevo contenedor y, por lo tanto, el pwd es '/'.
Si lo desea, puede abrir un problema en github para agregar una instrucción CHDIR a Dockerfile.
Puede ser que puedas probar esto, no estoy seguro. Y no puedo intentarlo Si no funciona, no espere ningún voto negativo.
Sólo:
RUN 'cd tmp123 ; pwd'
En lugar de
RUN cd tmp123 RUN pwd