7.3.9.2. Distributed Uber JAR Deployment
Для настройки распределенной конфигурации откройте проект CUBA в Студии, выполните действие Deployment settings, перейдите на вкладку Uber JAR и затем отредактируйте настройки, как описано ниже:
-
Включите Build Uber JAR
-
Выключите Single Uber JAR.
Добавьте следующие настройки в appProperties:
appProperties = ['cuba.automaticDatabaseUpdate': true,
'cuba.webHostName':'sales-core',
'cuba.connectionUrlList': 'http://sales-core:8079/app-core',
'cuba.webAppUrl': 'http://sales-web:8080/app',
'cuba.useLocalServiceInvocation': false,
'cuba.trustedClientPermittedIpList': '*.*.*.*']
-
Свойство cuba.webHostName — конфигурационный параметр, задающий имя хоста, на котором запущен данный блок приложения. Указанное значение должно совпадать с именем core сервиса, указанного в
Dockerfile
. -
Свойство cuba.connectionUrlList задает список URL для подключения клиентских блоков к серверам Middleware. Имя хоста должно совпадать с именем сервиса
core
, указанного вDockerfile
, а contextName должен соответствовать имени файла core *.jar. -
Свойство cuba.webAppUrl определяет URL, по которому доступен Web Client приложения. Имя хоста должно совпадать с именем сервиса
web
, указанного вDockerfile
. -
Свойство cuba.useLocalServiceInvocation должно быть установлено в
false
, так как блоки Middleware и Web Client развернуты в отдельных контейнерах. -
Свойство cuba.trustedClientPermittedIpList определяет список IP адресов, с которых возможен вход в приложение.
Tip
|
Если в приложении используется более одного сервера Middleware, их все нужно перечислитьв свойстве cuba.connectionUrlList и настроить кластер серверов Web Client как описано в разделе Масштабирование приложения. |
Пересоберите JAR-файлы с помощью задачи buildUberJar:
gradle buildUberJar
Создайте две подпапки в папке docker-image
для web и core JAR-файлов. Так как для распределенного приложения создается отдельный контейнер для каждого JAR-файла, то в этом случае необходимо конфигурировать два файла Dockerfile
.
Конфигурационный файл Dockerfile
для core имеет вид:
### Dockerfile
FROM openjdk:8
COPY . /usr/src/cuba-sales
CMD java -Dapp.home=/usr/src/cuba-sales/home -jar /usr/src/cuba-sales/app-core.jar
Конфигурационный файл Dockerfile
для web имеет вид:
### Dockerfile
FROM openjdk:8
COPY . /usr/src/cuba-sales
CMD java -Dapp.home=/usr/src/cuba-sales/home -jar /usr/src/cuba-sales/app.jar
Файл docker-compose.yml
конфигурирует два сервиса core и web и выглядит следующим образом:
version: '2'
services:
postgres:
image: postgres:9.6.6
environment:
- POSTGRES_PASSWORD=cuba
- POSTGRES_USER=cuba
- POSTGRES_DB=sales
ports:
- "5433:5432"
networks:
- sales-network
sales-core:
image: cuba-sample-sales-core
networks:
- sales-network
sales-web:
image: cuba-sample-sales-web
ports:
- "8080:8080"
networks:
- sales-network
networks:
sales-network:
Соберите образы с помощью следующих команд:
docker build -t cuba-sample-sales-web ./web
docker build -t cuba-sample-sales-core ./core
Для запуска приложения перейдите в директорию с файлом docker-compose.yml
и запустите следующую команду:
docker-compose up
Приложение будет доступно по адресу http://localhost:8080/app
.
Tip
|
Для развертывания контейнеров на нескольких физических машинам вам может понадобиться установить и настроить Docker Swarm или Kubernetes. |