Proximo
Proximo

Reputation: 6551

Dockerfile Overriding ENV variable

I have a Dockerfile and I'd like to make the API configurable with a default value.

FROM socialengine/nginx-spa

ENV API_URL localhost:6007

So when I run this image I'd to be able to override the localhost:6007 with something like below:

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

This doesn't work and I can't find a clear explanation of how to do this.

Any advice?

Upvotes: 40

Views: 51097

Answers (1)

larsks
larsks

Reputation: 312500

What you have described should work just fine. Given:

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

Consider this:

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

Compared to:

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

Passing a -e VARNAME=varvalue on the docker run command line will override a default set in your Dockerfile.

If you are seeing different behavior, please update your question to show exactly the command you are running and the associated output.

Upvotes: 61

Related Questions