7.3.9.1. Развертывание монолитного Uber JAR
Откройте проект CUBA в Студии, выполните действие Deployment settings, перейдите на вкладку Uber JAR и затем отредактируйте настройки, как описано ниже.
-
Включите Build Uber JAR
-
Включите Single Uber JAR если не включено.
-
Нажмите кнопку Generate находящуюся справа от поля Logback configuration file.
-
Нажмите кнопку Generate находящуюся справа от поля Custom Jetty environment file. Во всплывающем окне заполните параметры подключения к БД. Для использования в приложении стандартного контейнера PostgreSQL, нужно заменить
localhost
наpostgres
в поле Database URL. -
Сохраните настройки.
Соберите JAR-файл, выполнив команду buildUberJar в Gradle. Вы можете сделать это прямо в Студии, открыв диалог Search, или из командной строки:
gradle buildUberJar
Docker-образ с проектом CUBA должен использовать базовый образ OpenJDK. Для указания информации, необходимой Docker для запуска приложения, используется файл Dockerfile
. Dockerfile
— это текстовый файл, в котором содержится список команд Docker-клиента. Это простой способ автоматизировать процесс создания образа. В файле можно указать базовый образ Docker для запуска, местоположения кода проекта, а так же необходимые зависимости и команды, которые нужно использовать при запуске контейнера.
-
Создайте в проекте папку
docker-image
. -
Скопируйте в неё JAR-файл.
-
Создайте
Dockerfile
. Файл должен содержать следующий текст:
### 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
-
Инструкция
FROM
инициализирует новый этап сборки и устанавливает базовый образ для последующих инструкций. -
Инструкция
COPY
копирует новые файлы или директории из<src>
и добавляет их в файловую систему контейнера по пути<dest>
. Можно указать несколько ресурсов<src>
, но они должны относиться к исходному каталогу, в котором запушена сборка. -
Главное предназначение инструкции
CMD
— сообщить контейнеру какие команды нужно выполнить при старте.
Для получения дополнительной информации об инструкциях Dockerfile
см. Dockerfile reference.
Теперь можно создать образ:
-
Откройте терминал из папки
docker-image
. -
Запустите команду сборки. Команда
docker build
довольно проста: она принимает опциональный тег с флагом-t
и путь до директории, в которой лежитDockerfile
, Точка.
означает текущую директорию.
docker build -t cuba-sample-sales .
Если у вас нет образа openjdk:8
то Docker-клиент сначала скачает его, а потом создаст образ приложения CUBA.
Для определения и запуска много-контейнерных Docker приложений используется инструмент Docker Compose. Вся конфигурация для docker-compose описывается в файле docker-compose.yml
, и с его помощью можно одной командой поднять приложение с необходимым набором сервисов.
Конфигурационный файл будет иметь следующую сруктуру:
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
web:
image: cuba-sample-sales
ports:
- "8080:8080"
networks:
- sales-network
networks:
sales-network:
В этом файле определены два сервиса, web
and postgres
. Сервис web
:
-
использует образ приложения CUBA, который был создан с помощью
Dockerfile
, -
пробрасывает порт 8080 контейнера на порт 8080 хоста.
Сервис postgres
использует публичный образ Postgres, скачанный из репозитория Docker Hub.
Для запуска приложения перейдите в директорию с файлом docker-compose.yml
и выполните команду:
docker-compose up
Приложение будет доступно по адресу http://localhost:8080/app
.