Docker 环境变量未被覆盖

标签 docker environment-variables

鉴于我有一个 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 run -e "A_TEST=hello" alpine env

关于Docker 环境变量未被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48915360/

相关文章:

ruby-on-rails - Ruby 应用程序的多个环境

c++ - 为什么 Visual Studio 2010 没有 "unpack"系统变量?

VBScript 环境变量%COMPUTERNAME%

makefile - 如何在 GNU makefile 中使用环境变量 PROGRAMFILES(X86)?

linux - 为什么我的 sed 替换为 & 无法执行?

docker - 如何从Docker镜像配置中删除Cmd条目?

php - Docker:如何在多个容器/服务之间共享相同的应用程序代码(例如PHP-FPM和NGINX)

docker - 调试在构建第一个服务时卡住的 docker-compose 构建

docker - 无法从 GitHub 在 Docker Hub 上创建构建

ruby - Ruby 脚本可以告诉它在哪个目录中吗?