【问题标题】:Dockerfile Overriding ENV variableDockerfile 覆盖 ENV 变量
【发布时间】:2017-03-13 02:20:38
【问题描述】:

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

来自社交引擎/nginx-spa

ENV API_URL 本地主机:6007

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

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

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

有什么建议吗?

【问题讨论】:

    标签: bash docker environment-variables


    【解决方案1】:

    您所描述的应该可以正常工作。给定:

    $ 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
    

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

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

    更新

    这里是完整的例子,记录下来供您观赏:

    https://asciinema.org/a/a5a2n3exlyh4jkii4k0ivvqmd

    【讨论】:

    • 感谢您的回复。但我认为这不是你给我的有效 docker 命令。它会尝试构建映像 ENV。
    • 呃,什么?这些是完全有效的 docker 命令。请注意,两个示例中的图像名称都是ui。这些是docker run 命令,它们不会构建任何东西。如果您输入错误,他们可能会尝试提取图像。
    • 有趣,它没有用,但你的回答确实帮助我找出了我的问题。当我应该将它用作 CMD 时,我尝试在 RUN 部分中使用 ENV 变量。很抱歉这个模糊的问题。 +1 asciinema.org。
    猜你喜欢
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 2017-12-22
    相关资源
    最近更新 更多