Dockerfile覆盖ENV变量

Pro*_*imo 20 bash environment-variables docker

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

来自socialengine/nginx-spa

ENV API_URL localhost:6007

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

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

这不起作用,我找不到如何做到这一点的明确解释.

有什么建议?

lar*_*sks 32

你所描述的应该工作得很好.鉴于:

$ cat Dockerfile
FROM socialengine/nginx-spa
ENV API_URL localhost:6007
$ docker build -t ui .
[...]
Run Code Online (Sandbox Code Playgroud)

考虑一下:

$ docker run -it --rm ui env | grep API_URL
API_URL=localhost:6007
Run Code Online (Sandbox Code Playgroud)

相比:

$ docker run -it --rm -e API_URL='production:6007' ui env | grep API_URL
API_URL=production:6007
Run Code Online (Sandbox Code Playgroud)

传递一个-e VARNAME=varvaluedocker run命令行将覆盖在你的Dockerfile默认设置.

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

更新

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

https://asciinema.org/a/a5a2n3exlyh4jkii4k0ivvqmd

  • 有意思,它没有用,但你的回答确实帮助我找出了我的问题.当我将它用作CMD时,我尝试在RUN部分使用ENV变量.抱歉这个模糊的问题.asciinema.org为+1. (3认同)