il modo migliore per installare il pacchetto locale nell'immagine della finestra mobile

6

Ho un pacchetto python che ho scritto e voglio usarlo in più build di finestra mobile.

Tuttavia, non posso semplicemente installare il mio pacchetto locale situato al di fuori della cartella Dockerfile. E non voglio copiare il pacchetto in più progetti.

Quindi, come posso mantenere la mia architettura DRY ?

    
posta Roman 08.02.2018 - 07:47
fonte

1 risposta

4

Non sono sicuro del motivo per cui le persone ti hanno downvoted, a parte il fatto che esiste un modo ben documentato e semplice per farlo.

Le immagini Docker sono sovrapposte e puoi costruire tutti i tuoi pacchetti essenziali per tutte le immagini in una nuova immagine mobile di tua creazione, quindi estenderla da quella.

Ad esempio, quando scrivi il file docker, la prima riga sarà

FROM someothercontainer

Quello che puoi fare è quindi creare una nuova immagine da usare nel tuo "FROM" in tutti i contenitori futuri che scrivi, che avranno questo built-in. L'esempio banale è costruire un contenitore qualcosa come

FROM ubuntu
apt-get install python

E poi costruisci questa immagine come my-image-with-python-installed o qualsiasi altra cosa.

Quindi, nel contenitore successivo in cui desideri installare le tue cose da un unico contenitore, scrivi il tuo Dockerfile come tale:

FROM my-image-with-python-installed
ADD my-local-package
...

La documentazione sulla pagina Docker è un po 'di basso livello in quanto vogliono che tu crei le immagini di base più piccole che puoi, ma puoi trovarlo qui: link

La documentazione per il comando FROM è disponibile qui link ma dovrai creare il tuo immagine di base prima, ma ci sono un sacco di articoli là fuori su come farlo.

Modifica:

È molto comune avere un'immagine di base memorizzata in un repository, specialmente se i contenuti non cambiano. In questo modo è possibile accedervi da diverse macchine di compilazione e non è necessario ricostruirlo spesso se non è possibile configurare piccoli repository locali, e molti strumenti di gestione degli artefatti hanno questa funzione integrata. Se, tuttavia, stai costruendo le immagini al volo ma tutte hanno ancora una base comune, non è necessario memorizzarle in un repository: devi solo costruire l'immagine di base prima e poi come locale a quella macchina di costruzione tutte le altre le immagini create su quella macchina saranno in grado di accedervi.

    
risposta data 08.02.2018 - 10:26
fonte