2017-10-08 4 views
0

docker build peut accepter l'URL d'un repo git pour trouver les fichiers à construire.Pourquoi devrais-je construire un docker à partir d'une URL de repo?

Mais cela me confond parce que c'est le flux de travail, je pense:

* Pull my repo with my code and dockerfile 
* Do development 
* run docker build using the PATH "context" of the repo on my local drive 
* poke/test my app after the container spins up 
* Write more code do more builds, etc 

Si Im bâtiment directement à partir d'une prise en pension, ce qui fait ce regard de flux de travail comme? Serais-je en train de m'engager, en poussant à distance et en construisant? Ou est cette fonctionnalité pour un pipeline où mon serveur de construction fait construire un docker à partir d'un repo parce que je pensais que je suis supposé passer des "images" pour ce genre de chose.

Répondre

2

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?

+0

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

+0

@ 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