【发布时间】:2018-10-28 17:34:54
【问题描述】:
我正在开发一个带有 vuejs 前端和 nodejs 后端的应用程序。我的前端向后端发出 API https 请求。我已经用 vue-cli 和 webpack 开始了我的项目。 我需要从 env 变量 (BACKEND_URL) 获取后端 API url。 由于我使用的是 webpack,因此我将此行添加到 config/prod.env.js :
module.exports = {
NODE_ENV: '"production"',
-> BACKEND_URL: JSON.stringify(process.env.BACKEND_URL)
}
它使用 webpack-dev-server 在开发模式下完美运行。我通过 docker-compose 文件传递了 env var:
environment:
- BACKEND_URL=https://whatever:3000
但是当我运行构建时,我使用 nginx 来提供静态文件(但问题与使用 Visual Studio Code Live Server Extension 相同)。我以与以前相同的方式发送 BACKEND_URL env var。现在的问题是 process.env.BACKEND_URL 在应用程序中未定义(但在容器中定义)!所以我不能进行后端http调用:( 我正在努力寻找问题,请不要对回复无礼。谢谢
【问题讨论】:
-
我认为您需要将 env 变量保留在 .env 文件中。您可以拥有
url.env,其中包含内容BACKEND_URL=https://whatever:3000,然后在 docker-compose 中添加一行env_file: -url.env。看看是否有帮助。 docker-compose 的格式不太合适。你可能知道它是怎么回事。 -
感谢您的反馈。问题不存在:当我使用 docker exec /bin/bash 和 printenv 进入容器时,BACKEND_URL 就在那里。问题是webpack编译后的项目无法再读取env var。
标签: docker webpack vue.js docker-compose environment-variables