Quarkus, Heroku и различные среды - PullRequest
0 голосов
/ 26 января 2020

В настоящее время я занимаюсь разработкой простого веб-приложения с отдельным проектом внешнего интерфейса (Vue) и внутреннего интерфейса (API REST Quarkus). На данный момент я установил 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 и установил переменную config в своем проекте внешнего интерфейса со следующим значением:

VUE_APP_ROOT_API:https://mybackend.herokuapp.com

Вызовы из моего интерфейса успешно работают!

Вопрос

Для следующего шага я хочу еще больше ограничить его и просто включить мой интерфейс для вызова моего API. Я знаю, что могу установить что-то вроде

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

Однако я не знаю, как я мог бы сделать это на quarkus с различными средами (разработка, локальная и производственная)? Я нашел эту ссылку , но я не знаю, как правильно настроить heroku и мое бэкэнд-приложение. Нужно ли настраивать разные профили, которые применяются в разных средах? Или есть другое решение? Нужны ли переменные Herokus Config?

Спасибо за помощь!

1 Ответ

2 голосов
/ 26 января 2020

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=....

Моя рекомендация - использовать профиль. Таким образом, вы можете с уверенностью проверить, что все ваши настройки соответствуют друг другу.

...