You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 07:18:13