【问题标题】:Docker Environment Variable Not Overridden未覆盖 Docker 环境变量
【发布时间】:2018-02-21 20:59:39
【问题描述】:

鉴于我有一个像这样的 dockerfile:

ARG MAX_MEMORY_PER_NODE="10GB"
ENV P_MAX_MEMORY_PER_NODE="${MAX_MEMORY_PER_NODE}"
ENTRYPOINT ["/var/p/entrypoint.sh"]

entrypoint.sh 做了类似的事情:

echo "Max memory ${P_MAX_MEMORY_PER_NODE}"

如果我要使用默认值运行容器,我会期望

Max Memory 10GB

这行得通,但如果我运行

docker run me/mycontainer:latest -e P_MAX_MEMORY_PER_NODE=1GB

脚本仍然使用默认值(不打印 1GB 代替)。事实上,如果我跑了:

docker run me/mycontainer:latest -e A_TEST=Hello

而且脚本有

echo "My test: ${A_TEST}"

它会输出

My test:

我在这里做错了什么?我不能从 docker run 覆盖(甚至设置)入口点脚本中使用的环境变量吗?

【问题讨论】:

    标签: docker environment-variables


    【解决方案1】:

    在图片前设置环境变量:

    docker run -e "A_TEST=hello" 高山环境

    【讨论】:

    • 哇,这可能是我最近做过的最愚蠢的事情之一。猜猜如果我遵循参数顺序的文档会有所帮助。谢谢。
    【解决方案2】:

    对于docker-compose

    类似于这个答案:https://stackoverflow.com/a/48915478/11406645

    当使用docker-compose 时,您正在向docker-compose.yaml 文件传递​​一个环境变量,或者覆盖env_file 中的一个;你应该像这样传递你的环境变量:DEBUG=1 docker-compose up

    我遇到的另一个问题是 docker 命令需要sudo 权限:

    如果您在docker-compose 命令之前使用sudo,请在sudo 之后添加环境变量,如下所示:sudo DEBUG=1 docker-compose up

    错误的方式:

    DEBUG=1 sudo docker-compose up

    正确的方法:

    sudo DEBUG=1 docker-compose up

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-21
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      • 2017-12-24
      相关资源
      最近更新 更多