J'ai besoin d'exécuter une application à partir d'un répertoire spécifique.
$ Sudo docker run -P ubuntu/decomposer 'cd /local/deploy/decomposer; ./decomposer-4-15-2014'
2014/10/09 21:30:03 exec: "cd /local/deploy/decomposer; ./decomposer-4-15-2014": stat cd /local/deploy/decomposer; ./decomposer-4-15-2014: no such file or directory
Ce répertoire existe définitivement, et si je me connecte à docker en exécutant bash de manière interactive, je peux exécuter la commande ci-dessus.
$ Sudo docker run -i -t ubuntu/decomposer /bin/bash
# cd /local/deploy/decomposer; ./decomposer-4-15-2014
Je peux exécuter mon programme en spécifiant le chemin d'accès complet, mais il se bloque car il s'attend à être lancé à partir du répertoire actuel. Que puis-je faire?
Passez votre commande comme argument à/bin/sh comme ceci:
Sudo docker run -P ubuntu/decomposer /bin/sh -c 'cd /local/deploy/decomposer; ./decomposer-4-15-2014'
Vous pouvez utiliser -w
option pour changer votre répertoire de travail.
docker run
-w, --workdir="" Working directory inside the container
Donc, dans votre cas, vous exécuteriez:
Sudo docker run -w /local/deploy/decomposer -P ubuntu/decomposer ./decomposer-4-15-2014
Utilisez WORKDIR dans votre Dockerfile pour définir le répertoire de travail. Ensuite, vous pouvez exécuter votre commande avec EXEC.
Cela peut être dû au problème d'autorisation ou l'instance n'est pas en mesure de trouver le chemin disponible exécutable. Pour vérifier cela, essayez d'ajouter l'emplacement exécutable disponible dans le chemin d'accès et essayez d'exécuter le script
pour ajouter le répertoire courant dans le chemin, veuillez utiliser la commande ci-dessous
$ export PATH=$PATH: