Dockerfile覆盖ENV变量

时间:2016-10-30 23:26:29

标签: bash docker environment-variables

我有一个Dockerfile,我想使用默认值配置API。

  

来自socialengine / nginx-spa

     

ENV API_URL localhost:6007

因此,当我运行此图像时,我能够使用以下内容覆盖localhost:6007:

  

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

这不起作用,我无法找到如何执行此操作的明确说明。

有什么建议吗?

1 个答案:

答案 0 :(得分:29)

你所描述的应该工作得很好。给出:

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

考虑一下:

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

与:相比:

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

-e VARNAME=varvalue命令行上传递docker run将覆盖Dockerfile中的默认设置。

如果您看到不同的行为,请更新您的问题,以准确显示您正在运行的命令以及相关的输出。

<强>更新

以下是完整的示例,为您的观看乐趣而录制:

https://asciinema.org/a/a5a2n3exlyh4jkii4k0ivvqmd