2016-01-08 15 views
10

ho bisogno di aggiungere alcuni percorsi sul mio cammino nella finestra mobile-compose.ymlfinestra mobile-composizione aggiungendo al PATH

nella finestra mobile-compose.yml ho cercato

app: 
    ... 
    environment: 
     - PATH /code/project 

, tuttavia, che solo sovrascrive quello esistente pERCORSO - mentre io voglio aggiungere al percorso esistente

risposta

1

per aggiungere un unico luogo al PATH nel file finestra mobile-compose.yml:

app 
    environment: 
     - PATH=/code/project:$PATH 

per aggiungere più posizioni al tuo PATH nel file finestra mobile-compose.yml

app 
    environment: 
     - PATH=/code/project:/code/lib:/foo/bar:$PATH 

da aggiungere al vostro PYTHONPATH

app 
    environment: 
     - PYTHONPATH=/code/project:/code/lib:/foo/bar 
+6

qui $ PATH sarebbe sostituito con il valore definito sulla macchina su cui si esegue il comando finestra mobile-composizione. Ciò non estenderebbe il valore della variabile di ambiente PATH originale com'era nell'immagine della finestra mobile. – Thomasleveil

+0

@Thomasleveil - Interessante - Ho provato l'estensione del PERCORSO usando il codice sopra e funziona - ho provato diverse volte –

+2

sei sicuro che il valore di 'PATH' non fosse lo stesso sia sul sistema host della docker che sull'immagine del docker, come coincidenza? – Thomasleveil

9

Un docker-compose.yml non offrono qualsiasi mezzo per estendere una variabile d'ambiente che sarebbe già stato impostato in un'immagine Docker.

L'unico modo che vedo a fare queste cose è quello di avere un'immagine Docker, che si aspetta un po 'variabile d'ambiente (diciamo ADDITONAL_PATH) e si estende in fase di esecuzione una propria variabile PATH ambiente con esso.


Prendiamo il seguente Dockerfile:

FROM busybox 
ENV PATH /foo:/bar 
CMD export PATH=$PATH:$ADDITIONAL_PATH; /bin/echo -e "ADDITIONAL_PATH is $ADDITIONAL_PATH\nPATH is $PATH" 

e il file seguente finestra mobile-compose.yml (nella stessa directory del Dockerfile):

app: 
    build: . 

Costruisci l'immagine: docker-compose build

E iniziare un contenitore: docker-compose up, si otterrà il seguente output:

app_1 | ADDITIONAL_PATH è

app_1 | PATH è/foo:/bar:

Ora modificare il file difinestra mobile-compose.yml a:

app: 
    build: . 
    environment: 
    - ADDITIONAL_PATH=/code/project 

e avviare un contenitore: docker-compose up, si avrà ora il seguente risultato:

app_1 | ADDITIONAL_PATH è/codice/progetto

app_1 | PATH è/foo:/bar:/codice/progetto


noti inoltre un errore di sintassi nella tua finestra mobile-composizione.yml file: deve essere presente un segno di uguale (=) tra il nome della variabile di ambiente e il suo valore.

environment: 
    - PATH=/code/project 

invece di

environment: 
    - PATH /code/project 
+1

Funzionerà anche nel file 'Dockerfile':' ENV = "/ mio/nuovo/percorso" $ {PATH} ".Tieni che le virgolette sono importanti.Io consiglio di aggiungere questo alla tua risposta.Vedi [questo post] (https : //stackoverflow.com/questions/28722548/updating-path-environment-variable-permanently-in-docker-container). – orodbhen