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
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
@Thomasleveil - Interessante - Ho provato l'estensione del PERCORSO usando il codice sopra e funziona - ho provato diverse volte –
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