web-dev-qa-db-fra.com

Comment spécifier le répertoire de travail pour ENTRYPOINT dans Dockerfile

L'image Docker (basée sur Windows) inclut un répertoire d'application à C:\App. À l'intérieur de ce répertoire résident plusieurs sous-dossiers et fichiers, dont un fichier de commandes appelé process.bat. Le Dockerfile (utilisé pour construire l'image) se termine comme ceci:

ENTRYPOINT [ "C:\\App\\process.bat" ]

Lorsque j'instancie cette image à l'aide de la commande: docker run company/app, le fichier de commandes s'exécute, mais il échoue au point où d'autres fichiers sous C:\App sont référencés. Essentiellement, le répertoire de travail est toujours C:\ depuis le point d'entrée du conteneur Docker.

Existe-t-il un moyen de définir le répertoire de travail dans le Dockerfile? Il existe deux alternatives:

  • Ajouter -w C:\App à la course du docker
  • Dans le fichier batch, je peux ajouter une ligne au début cd /D C:\App

Mais existe-t-il un moyen de spécifier le répertoire de travail dans le Dockerfile?

13
Web User

WORKDIR /App est une commande que vous pouvez utiliser dans votre dockerfile pour changer le répertoire de travail.

25
Ayushya

Si /App est un volume monté, vous devez spécifier VOLUME /App avant WORKDIR pour l'utiliser avec ENTRYPOINT, sinon il ne sera pas vu par ENTRYPOINT:

VOLUME ["/App"]
WORKDIR /App
ENTRYPOINT ["sh", "start.sh"]

Lequel start.sh est dans /App répertoire.

6
AmirHossein