如何让 Cloud Foundry 从 React 应用程序中的特定 .env 文件中读取?
Posted
技术标签:
【中文标题】如何让 Cloud Foundry 从 React 应用程序中的特定 .env 文件中读取?【英文标题】:How can I make cloud foundry read from specific .env file in react app? 【发布时间】:2022-01-11 05:39:30 【问题描述】:我有一个 react 应用,它有 .env.development、.env.test、.env.production 文件。他们每个人都只设置了 REACT_APP_PROFILE 变量,并且他们的值设置为 dev、test 和 prod相应地。
我使用npm run build
命令部署我的应用程序并使用cf push
命令将其推送到云代工厂,并打印出 process.env.REACT_APP_PROFILE 和 process.env.NODE_ENV 屏幕上的变量。
我在 vmw 应用程序管理器中只有一个名为 'dev' 的空间。我希望这个空间读取 .env.test 文件,但它从 .env.production 文件中读取(可能是因为我运行了npm run build
命令)。
我的问题是:
1- 如何使应用管理器中的空间 'dev' 从我的 .env.development 或 .env.test 中读取文件?
2- 我应该在应用管理器中为每个环境创建不同的空间吗?如果是,那么我可以定义不同的 manifest.yml 文件,例如 manifest-test.yml、manifest-prod.yml 吗?我现在只有一个 manifest.yml 文件,其内容如下:
---
applications:
- name: myreactapp
instances: 1
memory: 64M
path: build/
timeout: 120
routes:
- route: myreactapp.apps.xxx.xxx
buildpack: staticfile_buildpack
【问题讨论】:
【参考方案1】:如何使应用管理器中的空间“dev”从我的 .env.development 或 .env.test 文件中读取?
我不认为这是特定于 CF 的。这只是由您推送到 CF 的文件造成的。
(可能是因为我运行了 npm run build 命令)。
这也是我的想法。您正在使用 cf push
部署该命令的输出。如果输出是使用生产模式构建的,那么您只会看到生产,直到您将构建过程更改为在调试模式下生产某些东西。
2- 我应该在应用管理器中为每个环境创建不同的空间吗?如果是,那么我可以定义不同的 manifest.yml 文件,例如 manifest-test.yml、manifest-prod.yml 吗?我现在只有一个 manifest.yml 文件,内容如下:
这完全取决于您以及您希望如何组织和控制对应用程序的访问。我认为控制访问通常是对空间设计影响最大的因素。
您可以邀请不同的开发者到每个空间。例如,如果你有 dev 和 prod 在不同的空间,那么你可以有效地限制对 prod 的访问。您可以邀请整个团队进行开发,但也许只有您的 SRE 团队进行开发。如果您将所有应用程序放在同一个空间中,那么您就无法做出这种区分。
同时,更多的空间需要管理更多的工作,所以如果您不需要区分这种类型的访问控制,那么使用更少的空间可能更容易。
【讨论】:
以上是关于如何让 Cloud Foundry 从 React 应用程序中的特定 .env 文件中读取?的主要内容,如果未能解决你的问题,请参考以下文章
IBM 发布Cloud Private:基于Kubernetes和Cloud Foundry
Cloud Foundry 任务 - 从服务实例调用 REST API
如何将 Spring Boot 部署到 Cloud Foundry?
从Spring Tool Suite(STS)将“hello world”Spring应用程序部署到Cloud Foundry的过程