Docker容器中env_file加载的环境变量无法被curl读取如何解决?
问题解决:Alpine容器中curl无法读取env_file定义的环境变量
问题根源是shell的引号规则:你在curl命令里用单引号'value=$TEST_VAR'包裹Cookie参数,单引号会阻止shell展开环境变量,导致$TEST_VAR被原样传递给curl,而不是替换成实际值。虽然容器已经通过env_file加载了TEST_VAR,但单引号让变量无法被解析。
解决方案:调整引号实现变量展开
修改compose.yaml中的command部分,将curl参数的单引号改为转义后的双引号(因为外层已经用双引号包裹整个sh命令内容),让shell能正常展开$TEST_VAR:
services: alpine_test: image: alpine:latest container_name: alpine_test env_file: - default.env command: /bin/sh -c "apk add --no-cache curl && \ curl -b \"value=$TEST_VAR\" https://website.com" restart: "on-failure"
额外说明
之前用environment字段时可行,是因为当时的命令写法刚好符合shell变量展开规则,和变量定义方式(environment/env_file)无关——env_file已经正确加载了环境变量,问题完全出在curl命令的引号使用上。
内容的提问来源于stack exchange,提问作者RBS
相关产品推荐
相关产品推荐

