Vous pouvez exécuter un script ou un paramètre plus complexe sur le RUN. Voici un exemple d'un Dockerfile que j'ai téléchargé pour regarder précédemment:
RUN cd /opt && unzip treeio.zip && mv treeio-master treeio && \
rm -f treeio.zip && cd treeio && pip install -r requirements.pip
En raison de l'utilisation de «&&», il n'obtiendra la commande finale «pip install» que si toutes les commandes précédentes ont réussi.
En fait, puisque chaque RUN crée un nouveau commit et (actuellement) une couche AUFS, si vous avez trop de commandes dans le Dockerfile, vous utiliserez les limites, donc la fusion des RUN (lorsque le fichier est stable) peut être très chose utile à faire.
Au cas où vous vous poseriez la question, l'effet de la cdseule dure pour la RUNcommande actuelle . Le prochain RUNcommencera à partir du courant WORKDIR.
Ritchie
532
Pour changer dans un autre répertoire, utilisez WORKDIR . Toutes les commandes RUN, CMD et ENTRYPOINT après WORKDIR seront exécutées à partir de ce répertoire.
Réponses:
Vous pouvez exécuter un script ou un paramètre plus complexe sur le RUN. Voici un exemple d'un Dockerfile que j'ai téléchargé pour regarder précédemment:
En raison de l'utilisation de «&&», il n'obtiendra la commande finale «pip install» que si toutes les commandes précédentes ont réussi.
En fait, puisque chaque RUN crée un nouveau commit et (actuellement) une couche AUFS, si vous avez trop de commandes dans le Dockerfile, vous utiliserez les limites, donc la fusion des RUN (lorsque le fichier est stable) peut être très chose utile à faire.
la source
cd
seule dure pour laRUN
commande actuelle . Le prochainRUN
commencera à partir du courantWORKDIR
.Pour changer dans un autre répertoire, utilisez WORKDIR . Toutes les commandes RUN, CMD et ENTRYPOINT après WORKDIR seront exécutées à partir de ce répertoire.
la source
la source