2015-01-15 6 views
8

Ho Wikimedia in esecuzione su Docker. Le estensioni di Wikimedia risiedono nella cartella extensions/ che inizialmente contiene estensioni incorporate (una estensione = una sottocartella)Come unire la cartella host con la cartella contenitore in Docker?

Ora desidero aggiungere nuove estensioni. Tuttavia, non preferisco l'opzione di modificare il Dockerfile o creare nuovi commit sul contenitore esistente.

E 'possibile creare una cartella nell'host (ad esempio /home/admin/wikimedia/extensions/) che deve essere unita (non sovrascrivere) con la cartella extension nel contenitore? Quindi ogni volta che voglio installare una nuova estensione, copio solo la cartella dell'interno nell'host /home/admin/wikimedia/extensions/

risposta

8

È possibile montare un volume dall'host in una posizione separata rispetto alla cartella dell'estensione, quindi nello script di avvio è possibile copiare il contenuto nella directory del contenitore. Dovrai ricostruire il tuo host una volta.

Ad esempio:

Dockerfile: 
    RUN cp startup-script /usr/local/bin/startup-script 
    CMD /usr/local/bin/startup-script 

startup-script: 
    #!/bin/bash 
    cp /mnt/extensions /path/to/wikipedia/extensions 
    /path/to/old-startup-script [email protected] 

docker run -d -v /home/admin/wikimedia/extensions:/mnt/extensions wikipedia 

Questo è un modo per aggirare questo problema, l'altro modo sarebbe quello di mantenere un contenitore di dati separati per le estensioni, allora si monterà questo e mantenerlo al di fuori della wikipedia contenitore. Dovrebbe avere tutte le estensioni in esso.

È possibile avviare uno in questo modo:

docker run -d -v /home/admin/wikimedia/extensions:/path/to/wikipedia/extensions --name extensions busybox tail -f /dev/null 
docker run -d --volumes-from extensions wikipedia 
+0

è ''/mnt/extensions'' il percorso della cartella estensioni nel mio host? In che modo lo script di avvio accede al file all'esterno del contenitore? –

+1

/mnt/extensions è montare la posizione all'interno del contenitore, ho corretto il comando di esecuzione della finestra mobile correttamente. – Michael