WORKDIR instruction va permettre de mettre le path par défaut (absolu et relatif) pour les commandes RUN, CMD, ENTRYPOINT, COPY, ADD.
Exemple :
FROM busybox
RUN mkdir -p /root/demo
WORKDIR /root/demo
RUN touch file01.txt
CMD ["/bin/sh"]
Si on build l'image et qu'on exécute la commande sh
dans le conteneur :
docker build -t test-workdir .
docker run -d --name test-workdir test-workdir
docker exec -it test-workdir sh
Et que l'on fait un pwd :
$ pwd
/root/demo
$ ls
file01.txt
On voit qu'on est dans le répertoire /root/demo
et que le fichier a été crée dans celui-ci.
On peut mettre plusieurs WORKDIR dans un dockerfile.
WORKDIR /a # Absolu
WORKDIR b # Relatif
WORKDIR c # Relatif
RUN pwd
On aura donc le retour suivant : /a/b/c
2eme exemple :
FROM busybox
RUN mkdir -p /root/demo/context1/context2
WORKDIR /root/demo # Absolu
WORKDIR context1 # Relatif
WORKDIR context2 # Relatif
RUN touch file01.txt
CMD ["/bin/sh"]
Le chemin du fichier file01.txt est : /root/demo/context1/context2