Применить переменные приложения Bind NodeJS к службе литейного цеха

У меня была эта точная проблема, затем я понял, что я определил в своем приложении application.properties:

spring.resources.static-locations=file:/var/www/static

. Это было переопределение всего, что я пробовал. В моем случае я хотел сохранить оба, поэтому я просто сохранил свойство и добавил:

spring.resources.static-locations=file:/var/www/static,classpath:static

Кто служил файлам из src / main / resources / static как localhost: {port} /file.html .

Ни одно из вышеперечисленных не работало для меня, потому что никто не упомянул об этом небольшом свойстве, которое можно было легко скопировать из Интернета, чтобы служить другой цели;)

Надеюсь, это поможет! Понял, что это хорошо впишется в этот длинный пост ответов для людей с этой проблемой.

0
задан Sean C 13 July 2018 в 13:59
поделиться

1 ответ

Основной способ справиться с этим - заставить ваше приложение выполнять этот синтаксический анализ. Большинство (всех?) Языков программирования дают вам возможность загружать переменные среды и анализировать JSON. Используя эти возможности, вы должны прочитать переменную среды VCAP_SERVICES и проанализировать JSON. Здесь платформа будет вставлять информацию из ваших связанных служб. Оттуда у вас есть информация о конфигурации, поэтому вы можете настроить свое приложение, используя значения из вашей связанной службы.

Manual Ex:

var vcap_services = JSON.parse(process.env.VCAP_SERVICES)

или вы можете использовать библиотеку. Там есть удобная библиотека Node.js, называемая cfenv. Вы можете узнать больше об обоих этих параметрах в документах.

https://docs.cloudfoundry.org/buildpacks/node/node-service-bindings.html

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

https://docs.cloudfoundry.org/devguide/deploy-apps/deploy-app.html#profile

Перехватчики времени выполнения позволяют вашему приложению включать файл с именем .profile, который будет выполняться перед вашей заявкой. Файл .profile - это простой скрипт bash, который может делать все, что необходимо для запуска вашего приложения. Единственный улов в том, что это должно произойти очень быстро, потому что оно должно завершиться до того, как ваше приложение сможет запустить, и ваше приложение имеет конечное количество времени для запуска (обычно 60 секунд).

В вашем случае, вы можете использовать jq для синтаксического анализа ваших значений и вставки их информации в свой файл конфигурации, возможно, используя sed, чтобы перезаписать значение шаблона. Другой вариант - запустить небольшой скрипт Node.js, так как ваше приложение использует Node.js, оно должно быть доступно на пути при запуске этого скрипта, чтобы прочитать переменные среды и сгенерировать ваш файл конфигурации.

Надеюсь, что это поможет!

0
ответ дан Daniel Mikusa 17 August 2018 в 12:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: