Il est utile pour les pipelines d'intégration continue. Un cas d'utilisation commun pour ces pipelines de construction est d'abord git clone
, puis git checkout
une branche, puis de passer dans un répertoire de contexte Docker, puis d'exécuter la construction. Cela pourrait ressembler à quelque chose comme:
#!/bin/sh
git clone ssh://git.mycompany.example.com/myproject.git
git checkout ${BRANCH}
cd docker
docker build -t "mycompany/myproject:${BRANCH}" .
Puisque c'est un cas d'utilisation commune, une méthode abrégée de faire la même chose est roulé dans docker build
, comme ceci:
#!/bin/sh
docker build -t "mycompany/myproject:${BRANCH}" \
"ssh://git.mycompany.example.com/myproject.git#${BRANCH}:docker"
Si vous vous souciez de la des détails sur la façon dont le clone/checkout se passe, ou faire autre chose après la vérification, ou faire quelque chose au-delà du cas simple, alors vous voulez aller avec la "longue" méthode de codage de chaque étape individuelle. Si vous tenez simplement à ce qu'une version spécifique d'un Dockerfile soit créée, vous pouvez le faire dans une seule commande shell.
Pour le développement local, vous devez continuer à utiliser docker build PATH
pour construire avec un contexte de génération, ou docker build - < Dockerfile
sans contexte.
Une autre raison d'utiliser le formulaire d'URL est si vous souhaitez créer une image pour un projet sur lequel vous ne travaillez pas activement. Supposons que vous utilisiez mycompany/coolimage
comme image de base. Il y a un bug dans certains outils de cette image de base publiés sur le référentiel d'images Docker. Les auteurs de mycompany/coolimage
ont corrigé ce bogue sur la branche dev
, mais cela n'a pas encore été publié dans le référentiel d'images. Vous pouvez vous asseoir sur vos mains et attendre que l'image soit publiée; ou, vous pouvez faire docker build -t mycompany/coolimage ssh://git.mycompany.example.com/myproject.git#dev
et continuer votre travail basé sur le Dockerfile dans la branche dev. Vous pouvez également cloner votre propre copie, mais si vous ne faites aucun changement, pourquoi s'en soucier?
hmm je suppose que je suis encore confus. Dans l'exemple que vous avez donné, vous avez déjà vérifié le repo (qui contient le dockerfile). Donc, vous avez vérifié la branche et le dockerfile est déjà là sur le disque, pourquoi auriez-vous besoin de rediriger le docker vers l'URL repo? Désolé, je dois manquer quelque chose de fondamental ici – red888
@ red888 regardez le deuxième exemple dans la réponse et à la [construction de docker] (https://docs.docker.com/engine/reference/commandline/build/#extended-description) Documentation – lifeisfoo