Dans mon Dockerfile
j'ai:
ADD ../../myapp.war /opt/tomcat7/webapps/
Ce fichier existe et ls ../../myapp.war
me renvoie le fichier correct mais lorsque je l'exécute, sudo docker build -t myapp .
j'ai:
Step 1 : ADD ../../myapp.war /opt/tomcat7/webapps/
2014/07/02 19:18:09 ../../myapp.war: no such file or directory
Quelqu'un sait-il pourquoi et comment le faire correctement?
Réponses:
Vous pouvez créer le Dockerfile à partir du répertoire parent:
la source
-f
ne semble pas être obsolète par la documentation -> Spécifiez un fichier Docker (-f) : docs.docker.com/engine/reference/commandline/build/…Avec docker-compose, vous pouvez définir le dossier contextuel:
la source
Malheureusement, (pour des raisons pratiques et de sécurité je suppose), si vous souhaitez ajouter / copier du contenu local, il doit être situé sous le même chemin racine que le
Dockerfile
.De la documentation :
EDIT: Il y a maintenant une option (
-f
) pour définir le chemin de votre Dockerfile; il peut être utilisé pour réaliser ce que vous voulez, voir la réponse de @Boedy ci-dessous.la source
Ajout d'extraits de code pour prendre en charge la réponse acceptée.
Structure du répertoire:
Entrée de fichier Docker:
Commande utilisée pour créer l'image du docker
la source
install_x.sh
?Depuis
-f
causé un autre problème, j'ai développé une autre solution.Le
-f
drapeau ne résout pas mon problème car mononbuild
image recherche un fichier dans un dossier et a dû appeler comme ceci:-f foo/bar/Dockerfile foo/bar
au lieu de
-f foo/bar/Dockerfile .
Notez également que ce n'est une solution que pour certains cas comme
-f
drapeaula source
La solution pour ceux qui utilisent composer est d'utiliser un volume pointant vers le dossier parent:
Mais je suis presque sûr que vous pouvez jouer avec des volumes dans Dockerfile .
la source