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

如何从docker-compose.yml传递环境变量至Vite React项目?

如何在Docker Compose中动态修改Vite应用的API_URL环境变量

我希望在docker-compose.yml中指定API_URL这类环境变量,实现只需重启Docker容器就能修改变量,无需每次修改都重新创建容器。

我尝试过如下配置:

version: "3.8"
services:
  frontend:
    container_name: "front"
    image: "front"
    ports:
      - 5005:80
    build:
      context: .
      # target: production
    environment:
      - VITE_API_URL=http://abcd.com

在Vite应用代码中通过import.meta.env.VITE_API_URL读取:

console.log(import.meta.env.VITE_API_URL);

但这种方式无法生效,推测原因是Docker环境变量与Vite环境变量不互通。我考虑过通过挂载包含.env文件的卷来实现类似效果,但不确定这是否是最优方案,想请教有什么可行的实现方法?


补充方案:从数据库动态获取变量

Vite项目编译完成后,环境变量对象无法再修改。因此可以将变量数据存储在数据库中,在main.tsx层面发起请求获取这些配置变量。


最佳实践:使用Nginx反向代理

经过多种尝试后,处理API地址的最优方案是使用Nginx反向代理:

当使用fetch、axios等请求工具时,省略IP地址,直接发送相对路径请求,比如fetch('/api/user'),应用会自动将请求定向到自身IP地址。

在Docker容器内编辑Nginx配置文件,添加反向代理规则:

location /api {
        proxy_pass http://abcd.com;
    }

这样Nginx会将所有以/api开头的请求转发至指定的URL端点。若需修改目标端点,只需编辑该配置文件,然后在Docker容器内执行nginx -s reload命令即可,无需重新构建Docker镜像。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 12:35:19