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=...
.
我的建议是使用配置文件。这样一来,您就可以安全地检查所有配置是否一致。
我目前正在开发一个简单的 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=...
.
我的建议是使用配置文件。这样一来,您就可以安全地检查所有配置是否一致。