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
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
@Thomasleveil - Interesujące - testowałem rozszerzanie PATH za pomocą powyższego kodu i działa - testowałem kilka razy –
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