Docker运行时无法替换Dockerfile中ENV值的问题排查
问题分析与解决办法
嘿,我来帮你排查这个问题!你遇到的情况主要有两个关键点需要修正:
1. docker run 的参数位置错误
Docker 命令的语法是 docker run [OPTIONS] IMAGE [COMMAND] [ARG...],所有像 --env 这类配置选项必须放在镜像名称之前。你现在把 --env 放在了镜像名 example 后面,这会被当成传递给容器内部 Entrypoint 的额外参数,而不是 Docker 用来设置环境变量的选项——这就导致你的 foo=Hallo Welt 根本没被 Docker 识别,容器自然还是用镜像里预设的 dev 值。
正确的运行命令应该是:
docker run --env "foo=Hallo Welt" example
2. run.sh 的 Shell 兼容性问题
你的基础镜像是 busybox,它默认只包含轻量级的 sh,没有完整的 bash。而你写的 run.sh 开头是 #!/bin/bash,这会导致容器执行脚本时找不到对应的 Shell(虽然你用 /bin/sh 去执行脚本能临时绕开这个问题,但不够稳妥)。建议把脚本的 shebang 改成:
#!/bin/sh
验证效果
按上面的修改后,重新构建镜像(如果调整了 run.sh 的话),再执行正确的 docker run 命令,就能看到输出 Hallo Welt xyz 啦!
内容的提问来源于stack exchange,提问作者arnerossmann
相关产品推荐
相关产品推荐

