web-dev-qa-db-fra.com

Docker build donne "impossible de préparer le contexte: le contexte doit être un répertoire: / Users / tempUser / git / docker / Dockerfile"

J'ai un Dockerfile qui est censé construire une image Ubuntu. Mais quand je cours

docker build -t ubuntu-test:latest ./Dockerfile

Il montre l'erreur suivante sur la console

impossible de préparer le contexte: le contexte doit être un répertoire:/Users/tempUser/git/docker/Dockerfile

Je suis sur Mac OsX. J'ai essayé de Sudo aussi. Rien ne marche.

47
Damien-Amen

Vous devez plutôt pointer vers le répertoire. Vous ne devez pas spécifier le fichier docker.

docker build -t ubuntu-test:latest . fait fonctionne.

docker build -t ubuntu-test:latest ./Dockerfile fait ne fonctionne pas.

73
Damien-Amen

Vous pouvez également exécuter la compilation de docker avec l’option -f

docker build -t ubuntu-test:latest -f Dockerfile.custom .

31
JakubKnejzlik

Pour spécifier un Dockerfile lors de la construction, vous pouvez utiliser:

docker build -t ubuntu-test:latest - < /path/to/your/Dockerfile

Mais cela échouera s'il y a une commande ADD ou COPY qui dépend du chemin relatif. Il existe de nombreuses façons de spécifier un context pour docker build, vous pouvez vous référer à docs of docker build pour plus d'informations.

14
shizhz

C'est simple, chaque fois que la construction de Docker est exécutée, Docker veut savoir quel est le nom de l'image, nous devons donc passer -t:. Maintenant, assurez-vous que vous êtes dans le même répertoire que celui où vous avez votre fichier Docker et exécutez

docker build -t <image_name>:<version> . Exemple docker build -t my_Apache:latest . en supposant que vous vous trouvez dans le même répertoire que votre fichier Dockerfile, sinon passez l'indicateur -f et le fichier Dockerfile.

docker build -t my_Apache:latest -f ~/Users/documents/myapache/Dockerfile

1
Prashanth

Comprendre les contextes

La commande docker build

La syntaxe de base de la commande de construction de docker est la suivante:

docker build -t imagename:imagetag context_dir

Le contexte

Le contexte est un répertoire et détermine ce que le processus de construction de docker va voir: Du point de vue du fichier Docker, tout fichier context_dir/mydir/myfile de votre système de fichiers deviendra /mydir/myfile dans le fichier Dockerfile et, par conséquent, pendant le processus de construction. .

Le dockerfile

Si le fichier docker s'appelle Dockerfile et réside dans le contexte, il sera trouvé implicitement en nommant la convention. C'est bien, car cela signifie que vous pouvez généralement trouver immédiatement le fichier Docker dans n'importe quel conteneur docker.

Si vous insistez pour utiliser un nom différent, dites "/ tmp/mydockerfile", vous pouvez utiliser -t comme ceci:

docker build -t imagename:imagetag -f /tmp/mydockerfile context_dir

mais alors le fichier de docker ne sera pas dans le conteneur ou sera au moins plus difficile à trouver.

1
Lutz Prechelt

Je suis confronté au même problème. J'utilise docker version:17.09.0-ce.

Je suis les étapes ci-dessous:

  1. Créer un fichier Docker et ajouter des commandes pour créer une image de menu fixe
  2. Allez dans le répertoire où nous avons créé Dockfile
  3. exécuter la commande ci-dessous $ Sudo docker build -t ubuntu-test:latest .

Il a résolu le problème et l'image créée avec succès.

Remarque: la commande de construction dépend de la version de docker ainsi que de l’option de construction utilisée. :)

0
Rajeev Rathor