2016-10-30 19 views
7

Mam plik Dockerfile i chciałbym skonfigurować API z domyślną wartością.Dockerfile Przesłanianie zmiennej ENV

OD SocialEngine/nginx-spa

ENV API_URL localhost: 6007

Więc kiedy uruchomić ten obraz bym, aby móc zastąpić localhost: 6007 coś jak poniżej:

doker run -e API_URL = production.com: 6007 ui

To nie działa i nie mogę znaleźć jasnego wyjaśnienia, jak to zrobić.

Każda rada?

Odpowiedz

13

To, co opisałeś, powinno działać dobrze. Biorąc pod uwagę:

$ cat Dockerfile 
FROM socialengine/nginx-spa 
ENV API_URL localhost:6007 
$ docker build -t ui . 
[...] 

Rozważ to:

$ docker run -it --rm ui env | grep API_URL 
API_URL=localhost:6007 

porównaniu do:

$ docker run -it --rm -e API_URL='production:6007' ui env | grep API_URL 
API_URL=production:6007 

Podjęcie -e VARNAME=varvalue w wierszu poleceń docker run zastąpi domyślny zestaw w Dockerfile.

Jeśli widzisz inne zachowanie, zaktualizuj pytanie, aby wyświetlić dokładnie uruchomione polecenie i powiązane dane wyjściowe.

Aktualizacja

Oto pełna przykładów, nagrany do oglądania:

https://asciinema.org/a/a5a2n3exlyh4jkii4k0ivvqmd

+0

Dzięki za odpowiedź. Ale nie sądzę, że to jest poprawne polecenie dokowania, które mi dałeś. Próbuje zbudować obraz ENV. – Proximo

+0

Uh, co? Są to całkowicie poprawne komendy dokowania. Zauważ, że nazwa obrazu w obu przykładach to 'ui'. A to są polecenia 'docker run', niczego nie zbudują. Mogą spróbować pobrać obraz, jeśli coś błędnie wpiszesz. – larsks

+1

Interesujące, to nie zadziałało, ale twoja odpowiedź pomogła mi znaleźć mój problem. Próbowałem używać zmiennej ENV w sekcji RUN, kiedy powinienem używać jej jako CMD. Przepraszam za niewyraźne pytanie. +1 dla asciinema.org. – Proximo