¿Cambiar comando de directorio en Docker?

Resuelto RParadox asked hace 10 años • 6 respuestas

En Docker quiero hacer esto:

git clone XYZ
cd XYZ
make XYZ

Sin embargo, debido a que no hay un comando cd, tengo que pasar la ruta completa cada vez (hacer XYZ /fullpath). ¿Alguna buena solución para esto?

RParadox avatar Dec 17 '13 17:12 RParadox
Aceptado

Para cambiar a otro directorio utilice WORKDIR . Todos los comandos RUN, CMD y ENTRYPOINT después de WORKDIR se ejecutarán desde ese directorio.

RUN git clone XYZ 
WORKDIR "/XYZ"
RUN make
Javier Castellanos avatar Nov 04 '2014 03:11 Javier Castellanos

Puede ejecutar un script o un parámetro más complejo para RUN. Aquí hay un ejemplo de un Dockerfile que descargué para verlo anteriormente:

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

Debido al uso de '&&', solo llegará al comando final 'pip install' si todos los comandos anteriores se ejecutaron correctamente.

De hecho, dado que cada RUN crea una nueva confirmación y (actualmente) una capa AUFS, si tiene demasiados comandos en el Dockerfile, utilizará los límites, por lo que fusionar los RUN (cuando el archivo es estable) puede ser una tarea muy sencilla. algo útil que hacer.

Alister Bulman avatar Dec 17 '2013 11:12 Alister Bulman

Me preguntaba si dos tiempos WORKDIRfuncionarán o no, pero funcionó :)

FROM ubuntu:18.04

RUN apt-get update && \
    apt-get install -y python3.6

WORKDIR /usr/src

COPY ./ ./

WORKDIR /usr/src/src

CMD ["python3", "app.py"]
Mian Ahmad avatar Feb 01 '2021 18:02 Mian Ahmad

Puede usar un solo comando RUN para todos ellos

RUN git clone XYZ && \
    cd XYZ && \
    make XYZ
aditya Damera avatar Sep 25 '2021 07:09 aditya Damera

En caso de que desee cambiar el directorio de trabajo del contenedor cuando ejecuta una imagen de la ventana acoplable, puede usar la opción -w(abreviatura de ):--workdir

docker run -it -w /some/valid/directory/inside/docker {image-name}

Árbitro:

docker runopciones: https://docs.docker.com/engine/reference/commandline/run/#options

jdhao avatar Aug 11 '2022 07:08 jdhao