Makefile中传递环境变量至docker run命令失效问题排查
问题解决:Makefile传递Docker环境变量失效
问题原因
直接在Shell执行docker run -e DOC_PATH='test' my-python-app:1.0能正常传递环境变量,但通过Makefile执行时,Python读取DOC_PATH会触发KeyError。根源是Makefile对单引号的处理逻辑:Shell会将单引号作为字符串界定符解析并丢弃,但Makefile会保留单引号传递给docker,导致docker接收到的参数是DOC_PATH='test'(包含单引号),而非预期的DOC_PATH=test,最终环境变量未正确设置。
解决方案
修改Makefile中的环境变量写法,去掉单引号即可:
run: docker run -e DOC_PATH=test my-python-app:1.0
如果环境变量值包含空格或特殊字符,改用双引号包裹:
run: docker run -e DOC_PATH="test with spaces" my-python-app:1.0
也可以用Makefile变量统一管理值,提升可读性:
DOC_PATH_VALUE := test run: docker run -e DOC_PATH=$(DOC_PATH_VALUE) my-python-app:1.0
验证
执行make run后,Python应用即可正常读取DOC_PATH环境变量。
内容的提问来源于stack exchange,提问作者user3579815
相关产品推荐
相关产品推荐

