【问题标题】:Quarkus, Heroku and different environmentsQuarkus、Heroku 和不同的环境
【发布时间】:2025-12-12 17:05:03
【问题描述】:

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

设置

我开始使用npm run serve 开发我的前端环境,使用./mvnw quarkus:dev 开发我的后端环境。前端在localhost:8081 上运行,后端在localhost:8080 上运行。 Heroku 还允许使用命令heroku local web 在本地运行您的应用程序。前端在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 配置变量吗?

感谢到目前为止的帮助!

【问题讨论】:

    标签: vue.js heroku environment-variables quarkus


    【解决方案1】:

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

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

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

    我的建议是使用个人资料。这样您就可以安全地一目了然地检查所有配置是否一致。

    【讨论】: