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

Fly.io部署时Dockerfile无法读取fly.toml环境变量求助

问题原因

fly.toml中[env]配置的环境变量是容器运行时生效的,而你在Dockerfile的RUN指令里读取的是镜像构建阶段的变量。flyctl不会自动将fly.toml里的运行时环境变量传递给Docker的构建过程,所以ARG API没有获取到值,导致echo $API输出为空。

解决方案

根据你的需求分两种情况处理:

情况1:构建镜像时需要使用这个变量

如果必须在RUN这类构建阶段指令中使用该变量,需要在部署时手动将变量传递给Docker构建:

  • 执行部署命令时通过--build-arg参数传入:
    flyctl deploy --build-arg API=ABC
    
  • 这样Dockerfile里的ARG API就能获取到值,后续的ENV和RUN指令也能正常使用该变量。

情况2:仅容器运行时需要使用这个变量

如果只是需要在容器启动后使用该变量,完全不需要在Dockerfile中配置ARG和ENV:

  1. 保留fly.toml里的[env]配置不变:
    [env]
      API = "ABC"
    
  2. 修改Dockerfile,去掉ARG和ENV相关配置,把需要执行的输出逻辑放到CMD或ENTRYPOINT中(这两个是容器启动时执行的,此时运行时环境变量已注入):
    CMD echo $API
    
  3. 重新执行flyctl deploy,容器启动后就能正确输出ABC。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:50:34