Один код приложения с несколькими контекстными путями / развертываниями для подключения к различным базам данных - PullRequest
0 голосов
/ 05 декабря 2018

Обнаружено требование в нашей команде при попытке перенести приложение WebSphere в Tomcat и развернуть на Pivotal Cloud Foundry, чтобы иметь одно и то же приложение для подключения к двум разным базам данных, которые имеют совершенно одинаковую схему с разными данными, по сути, с одним и тем же кодом приложения, развернутым вразличные пути и возможность подключения к базам данных на основе URL-адреса, вызываемого для доступа к приложению.

В настоящее время мы обрабатываем эту ситуацию в Websphere с помощью сценария развертывания для развертывания приложения на двух серверах и даемразличные детали базы данных в JNDI и доступ к приложению с использованием имен серверов.

Мы используем Jenkins для развертывания приложения на PCF.

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

1 Ответ

0 голосов
/ 06 декабря 2018

Я думаю, что есть несколько способов, которыми вы могли бы справиться с этим.

  1. Измените свое приложение, чтобы оно было в курсе и позволяло вам выбирать.Возможно, у вас есть параметр запроса для выбора, или /dev/blah переходит в одну БД, а /test/blah переходит в другую.

  2. Дважды нажмите одно и то же приложение, но свяжите разные базы данных и маршруты с каждым приложением.

  3. Попытка запустить два экземпляра одного и того же кода приложения внутри Tomcat в одном приложении на CF.

Из них # 1 подходитно, вероятно, потребует изменения кода.# 2 будет моим выбором, потому что это очень быстро сделать, # 3 будет много работы, потому что вы будете бороться с Java buildpack, что не рекомендуется.


Для достижения # 2, вы должны сделать следующее:

  1. Нажмите код приложения как app-A.
  2. Привязать службу базы данных.
  3. Сопоставить маршрут с контекстным путем, напримерmy-cool-app.example.com/app-a.
  4. Запустите приложение.

Повторите то же самое для app-B, но используйте другую базу данных и маршрут / путь (например, my-cool-app.example.com / app-b) `.

Если вы развертываете WAR-файл, вам нужно будет указать пакету сборки Java для развертывания вашего приложения по контекстному пути (он должен соответствовать заданному вами пути контекста маршрута).

cf set-env my-application JBP_CONFIG_TOMCAT '{tomcat: { context_path: /app-a }}'

https://github.com/cloudfoundry/java-buildpack/blob/master/docs/container-tomcat.md#common-configurations

Если вы используете Spring Boot и развертывание JAR, вам нужно установить server.contextPath=/app-a.

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

...