2014-12-31 17 views
5

La mia attuale comprensione è che Docker esegue tutti i comandi RUN git clone durante docker build e quindi il codice base per la mia app è "inserito" nell'immagine Docker.Docker git clone all'avvio di container?

In che modo è possibile eseguire lo git clone all'avvio del contenitore?

O questa è considerata cattiva pratica e anti-modello?

L'idea è che non voglio dover aggiornare la mia versione di immagine Docker ogni volta che apporto modifiche al mio repository git.

risposta

5

Lo schema di progettazione comune è la clonazione e la compilazione del progetto nel processo di creazione dell'immagine di Docker. Inoltre, è possibile configurare l'immagine come un Docker Automated Build, che è definito nella documentazione Docker come:

Automated generazioni sono una caratteristica speciale di Docker Hub che consentono di utilizzare cluster di build di Docker Hub per creare automaticamente immagini da un Dockerfile specificato e un repository GitHub o Bitbucket (o "contesto"). Il sistema clonerà il repository e creerà l'immagine descritta da il file Docker utilizzando il repository come contesto. L'immagine automatizzata risultante verrà quindi caricata nel registro Docker Hub e contrassegnata come Build automatico.

Il build automatizzato viene avviato ogni volta che si esegue un commit (e una spinta) nel ramo del repository che si sta indicando. Se viene attivato troppo spesso, potresti indicare un altro ramo.

In ogni caso, se si sceglie di eseguire git clone quando si esegue un nuovo contenitore, è possibile configurare il Dockerfile con CMD ["my-script"], essendo my-script qualsiasi script bash con il codice che si desidera.

+0

Questo è esattamente ciò di cui avevo bisogno. Grazie per il consiglio! – AJB

+0

Come funziona con una base di codice estesa + fase di verifica lunga? Ora abbiamo uno slave VMWare, che esegue un aggiornamento SVN. Con docker creerai una nuova immagine docker da zero + checkout completo? – RvdK