我有一个React App(CRA),它将在docker容器中运行,我将为其设置环境变量“ API_KEY” =“ some_value”。对于Windows的示例,这是系统属性->环境变量->系统变量->变量=“ API_KEY”和Value =“ some_value”。
我想在运行时将此变量获取到应用程序中。这是用于Azure App Insights的API_KEY。
上面的链接显示了<your instrumentation key>
。我将同一应用程序部署到多个环境。该应用程序的每个实例将需要使用其特定的App Insights。因此,这里的目标是在环境变量中指定该API_KEY,这对于每个docker容器而言都是不同的。
请注意,我知道nodeJs和process.env.API_KEY,但是这不会从系统环境变量中读取。有没有办法让系统变量链接到节点实例的process.env?
-PS此请求是针对需要立即启动的API服务的。因此,提出API请求来解决这个问题是不可能的。它将在向每个客户端记录JavaScript事件时向最终客户端公开。
答案 0 :(得分:0)
答案是否定的。您无法读取系统环境变量。但是,您可以在* .env文件中设置过程环境变量。就我而言,我将通过将由Dockerfile触发的shell脚本生成此env文件。然后,将针对以“ REACT_APP_#”开头的环境变量删除该过程。
希望这对其他人有帮助。
使用CRA设置环境 https://medium.com/@tacomanator/environments-with-create-react-app-7b645312c09d
Docker化Node.js Web应用程序 https://nodejs.org/en/docs/guides/nodejs-docker-webapp/
将环境变量从Docker传递到节点https://medium.com/@felipedutratine/pass-environment-variables-from-docker-to-my-nodejs-or-golang-app-a1f2ddec31f5
也很有帮助 https://github.com/facebook/create-react-app/issues/982