remove - Docker: RUN cd... no funciona como se esperaba
docker-compose (2)
Esta pregunta ya tiene una respuesta aquí:
El siguiente Dockerfile:
FROM ubuntu:12.10 RUN mkdir tmp123 RUN cd tmp123 RUN pwd
tiene la salida:
Uploading context 10240 bytes Step 1 : FROM ubuntu:12.10 ---> b750fe79269d Step 2 : RUN mkdir tmp123 ---> Running in d2afac8a11b0 ---> 51e2bbbb5513 Step 3 : RUN cd tmp123 ---> Running in 4762147b207c ---> 644801121b92 Step 4 : RUN pwd ---> Running in 3ed1c0f1049d / ---> eee62a068585
cuando se construye (comando 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.
Quizás puedas intentar esto; No estoy seguro y no puedo probarlo. Si no funciona, espero que no disminuya la votación.
Sólo:
RUN ''cd tmp123 ; pwd''
En lugar de
RUN cd tmp123
RUN pwd