Quarkus、Heroku 和不同的环境

Quarkus, Heroku and different environments

我目前正在开发一个简单的 Web 应用程序,它具有分离的前端 (Vue) 和后端 (quarkus REST API) 项目。现在,我已经设置了一个 MVP,其中前端显示一些从后端调用的简单数据。要获得有效的 MVP,我需要设置 CORS 支持。但是,首先我想解释一下我的设置:

设置

我开始用 npm run serve 开发我的前端环境,用 ./mvnw quarkus:dev 开发我的后端环境。前端 运行ning 在 localhost:8081 上,后端 运行ning 在 localhost:8080 上。 Heroku 允许在本地 运行 您的应用程序以及命令 heroku local web。前端 运行ning 在端口 0.0.0.0:5001 上,后端在 0.0.0.0:5000.

为了实现这个设置,我在我的前端设置了两个 .env 文件,它们指向我的后端 api。如果我想在开发模式下工作,文件 .env.development 被加载:

VUE_APP_ROOT_API=http://localhost:8080

如果我 运行 heroku local web 文件 .env.local

VUE_APP_ROOT_API=0.0.0.0:5000

已加载。

在我的后端我设置了 quarkus.http.cors=true 在我的 application.properties 中。

现在我想将这两个项目部署到 heroku 并在生产中使用它。因此,我设置了两个 heroku 项目,并在我的前端项目中设置了一个配置变量,其值如下:

VUE_APP_ROOT_API:https://mybackend.herokuapp.com

从我的前端调用成功!

问题

对于下一步,我想对其进行更多限制,只允许我的前端调用我的 API。我知道我可以设置类似

quarkus.http.cors.origins=myfrontend.herokuapp.com

但是,我不知道如何在具有不同环境(开发、本地和生产)的 quarkus 上执行此操作?我找到了 link 但我不知道如何正确配置 heroku 和我的后端应用程序。我是否需要设置应用于不同环境的不同配置文件?或者还有其他解决方案吗?我需要 Herokus 配置变量吗?

感谢到目前为止的帮助!

quarkus.http.cors.origins 在运行时可覆盖,因此您有多种可能性。

您可以使用配置文件并在 application.properties 中使用 %prod.quarkus.http.cors.origins=... 设置所有内容。然后,您可以在启动应用程序时使用 -Dquarkus.profile=prod,或者使用 QUARKUS_PROFILE=prod 作为环境变量。

另一种选择是为 quarkus.http.cors.origins 使用环境变量。那将是 QUARKUS_HTTP_CORS_ORIGINS=....

我的建议是使用配置文件。这样一来,您就可以安全地检查所有配置是否一致。