Dockerfile Overriding ENV variable

2019-02-04 13:35发布

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?

1条回答
贪生不怕死
2楼-- · 2019-02-04 14:31

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.

Update

Here is the complete example, recorded for your viewing pleasure:

https://asciinema.org/a/a5a2n3exlyh4jkii4k0ivvqmd

查看更多
登录 后发表回答