2016-01-08 9 views
10

muszę dodać kilka ścieżek do mojego PATH w Docker-compose.ymldoker-komponować dodanie do PATH

w Docker-compose.yml Próbowałem

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

jednak, że po prostu nadpisuje istniejący PATH - podczas gdy chcę dodać do istniejącej ścieżki

Odpowiedz

1

aby dodać pojedynczą lokalizację do PATH w pliku Döcker-compose.yml:

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

dodać wiele lokalizacji do PATH w pliku doker-compose.yml

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

dodać do PYTHONPATH

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

tutaj $ PATH zostanie zastąpiony wartością zdefiniowaną na komputerze, na którym uruchomiono komendę Döcker-komponować. Nie zwiększyłoby to wartości oryginalnej zmiennej środowiskowej PATH, tak jak było to w obrazie dokowania. – Thomasleveil

+0

@Thomasleveil - Interesujące - testowałem rozszerzanie PATH za pomocą powyższego kodu i działa - testowałem kilka razy –

+2

czy jesteś pewien, że wartość 'PATH' nie była taka sama zarówno w systemie hosta w docku, jak i w obrazie dokowania, jako zbieg okoliczności? – Thomasleveil

9

docker-compose.yml nie oferuje Ci każdy myśli o przedłużeniu zmienną środowiskową, która byłby już ustawiony na obrazie Docker.

Jedynym sposobem, widzę robić takich rzeczy jest mieć zdjęcie Docker który spodziewa się zmienną środowiskową (powiedzmy ADDITONAL_PATH) i rozciąga w czasie wykonywania własnej zmiennej PATH środowisko z nim.


Weźmy następujący Dockerfile:

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

i pliku po doker-compose.yml (w tym samym katalogu co Dockerfile):

app: 
    build: . 

Zbuduj obraz: docker-compose build

i rozpocząć opakowanie: docker-compose up, otrzymasz następujący komunikat:

app_1 | ADDITIONAL_PATH to

app_1 | PATH jest/foo:/bar:

Teraz zmień doker-compose.yml pliku:

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

i rozpocząć pojemnika: docker-compose up, można teraz uzyskać następujące dane wyjściowe:

app_1 | ADDITIONAL_PATH to/kod/projekt

app_1 | PATH jest/foo:/bar:/code/projekt


Również zauważyć błąd składni w Döcker-komponować.yml plik: musi występować znak równości (=) między nazwą zmiennej środowiskowej a jej wartością.

environment: 
    - PATH=/code/project 

zamiast

environment: 
    - PATH /code/project 
+1

Będzie to również działać w 'Dockerfile':' ENV = "/ my/new/path" $ {PATH} ". Pamiętaj, że cytaty są ważne.Zalecam dodanie tego do twojej odpowiedzi. Patrz [ten post] (https : //stackoverflow.com/questions/28722548/updating-path-environment-variable- trwały- w-docker-container). – orodbhen