Docker Entrypoint无法打印传入的环境变量问题求助
解决Docker环境变量无法打印的问题
我来帮你排查下问题所在,主要有两个关键点需要调整:
1. 修正docker run的参数顺序
你当前的运行命令写反了参数顺序:
docker run test-docker -e TEST=bar
Docker的命令选项(比如-e、-p这类配置项)必须放在镜像名称之前,否则Docker会把-e TEST=bar当成要传递给容器内部ENTRYPOINT的参数,根本不会识别为环境变量设置。正确的命令应该是:
docker run -e TEST=bar test-docker
2. 优化Dockerfile的ENTRYPOINT写法(可选但更可靠)
你的Dockerfile用了shell形式的ENTRYPOINT,虽然修正命令顺序后能正常输出,但如果后续需要给容器传递更多参数,这种写法可能会出现信号传递或参数解析的问题。推荐改用exec形式配合shell来解析环境变量:
FROM openjdk:8-jdk-alpine ENTRYPOINT ["sh", "-c", "echo $TEST"]
现在按正确流程操作:
- 如果修改了Dockerfile,重新构建镜像:
docker build -t test-docker .
- 运行容器:
docker run -e TEST=bar test-docker
这样就能正常输出bar了。
内容的提问来源于stack exchange,提问作者user6845507
相关产品推荐
相关产品推荐

