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

如何在docker-compose中读取本地操作系统的环境变量?

核心问题原因

你遇到的变量无法识别问题和docker-compose配置本身无关,根源是sudo的默认行为:默认执行命令时会重置环境变量,你在当前用户下export的TOKEN变量不会被传递到sudo触发的执行环境中,因此docker-compose无法读取到该变量。

可行解决方案
  • 方案1:临时传递指定变量给sudo
    执行启动命令时显式传递TOKEN变量即可:

    sudo TOKEN="$TOKEN" docker-compose up
    

    该方案适合单次临时传递变量的场景,不需要修改系统配置。

  • 方案2:配置sudo永久保留指定环境变量
    执行sudo visudo编辑sudo配置文件,添加以下规则保留TOKEN变量:

    Defaults env_keep += "TOKEN"
    

    保存后生效,后续使用sudo执行docker-compose时会自动保留当前用户的TOKEN变量。注意必须使用visudo命令编辑配置,避免语法错误导致sudo功能异常。

  • 方案3:不用sudo执行docker命令(更推荐)
    如果将当前用户加入docker用户组,后续执行docker相关命令不需要加sudo,自然不会出现环境变量被重置的问题:

    1. 执行命令将当前用户加入docker组:
      sudo usermod -aG docker $USER
      
    2. 退出当前终端重新登录后生效,直接执行启动命令即可正常读取环境变量:
      docker-compose up
      
  • 方案4:通过.env文件配置变量
    在docker-compose.yml同级目录创建.env文件,写入变量值:

    TOKEN=你的实际token值
    

    docker-compose默认会自动读取该文件中的变量,无需提前export变量,也不受sudo环境变量重置的影响,适合固定配置的场景。

内容的提问来源于stack exchange,提问作者user16662077

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:24:05