Applicare le applicazioni distribuibili in Docker Image

Vorrei rendere la distribuzione alla produzione il più facile ansible, ma lottando con il modo in cui farlo.

Se avrò il docker per la produzione, sarà bello avere un'image docker con la mia applicazione deployable, ma non sono sicuro se è un buon approccio.

Ho parecchie preoccupazioni:

  1. non sarebbe il block del sistema di strati, quando sostituirei il file each volta nella nuova versione dell'image?
  2. È buona idea fare degli script DB e degli strumenti di migrazione di questa image?
  3. L'ultima preoccupazione è come gestirla comodamente. Non voglio andare lì fermare il contenitore del tomcat e riprenderlo usando il volume dalla nuova image dell'applicazione (poiché il nuovo nome del contenitore dell'applicazione non può essere lo stesso).

Ho visto modi per farlo, ma non mi piacciono molto, ad esempio distribuire all'image Tomcat docker, creare un'image Tomcat con un'applicazione già in bundle o utilizzare il volume di sistema host. Mi piace avere qualcosa come installare "CD". Vorrei valutare la mia idea con altri approcci, parlando del corretto strumento per eseguirlo è forse per un'altra domanda.

non sarebbe il block del sistema di strati, quando sostituirei il file each volta nella nuova versione dell'image?

No, perché è ansible ripulire immagini impertinenti

docker rmi $(docker images --filter "dangling=true" -q --no-trunc) 

È buona idea fare degli script DB e degli strumenti di migrazione di questa image?

Sì, se il tuo script di avvio è in grado di rilevare se ha bisogno di applicarli.

Non mi piacciono molto, ad esempio distribuire all'image Tomcat docker, creare un'image Tomcat con un'applicazione già in bundle o utilizzare il volume di sistema host.

Se il contenitore del volume di dati è separato dall'applicazione, non dovrebbe essere un problema.

Dalla discussione , l'OP aggiunge:

usando questo docker create --name <container_name> <image_name> con nome image diverso può conservare il nome del contenitore e posso eseguire il contenitore Tomcat con gli stessi volumi?

 docker run -it --rm -p 8888:8080 --volumes-from <container_name> <image_name> 

Questa è l'idea, ma non funziona se c'è già un contenitore dati di creazione con quel nome.

Se non vi sono dati persistenti, si può fare il contenitore dei dati, e ricrearlo con lo stesso nome.

Se ci sono dati persistenti, è meglio copiare i nuovi dati aggiornati tramite un contenitore intermedio ( docker run ) che monterebbe temporaneamente il contenitore dei dati.