Установка при помощи Docker
Для работы с Docker-контейнерами необходимо установить Docker и Docker Compose.
Запуск платформы lsFusion с помощью Docker Compose
-
Скачайте файл
compose.yamlс центрального сервера в выбранную папку (будем называть её$FUSION_DIR$). Этот файл содержит настройки для запуска трёх контейнеров:- PostgreSQL
- Сервер приложений
- Веб-клиент
-
Настройка
compose.yaml(опционально):- Если требуется изменить параметры запуска (например, использовать другую версию контейнера или настроить переменные окружения), отредактируйте файл
compose.yamlв соответствии с документацией Docker. - Параметры запуска сервера приложений также можно задавать при помощи переменных среды контейнера - в атрибуте environment. К примеру, чтобы изменить локаль сервера на русскую, а также задать своё значение Xmx, напишите:
При поиске параметров запуска в переменных среды Spring автоматически преобразует их к верхнему регистру и заменяет точки на символы подчёркивания. В примере выше значения переменных среды подставятся в соответствующие параметры:
environment:
- USER_SETLANGUAGE=ru
- USER_SETCOUNTRY=RU
- JAVA_OPTS=-Xmx10guser.setLanguageиuser.setCountry. - Доступные образы контейнеров lsFusion:
- Если требуется изменить параметры запуска (например, использовать другую версию контейнера или настроить переменные окружения), отредактируйте файл
-
Запуск контейнеров:
Перейдите в папку
$FUSION_DIR$и выполните команду:docker-compose up -dПосле завершения запуска веб-клиент будет доступен по адресу:
http://localhost:8080/. -
Работа с файлами проекта:
-
После первого запуска в папке
$FUSION_DIR$будут созданы подпапки:docker-client-conf— конфигурация клиента.docker-db— данные базы данных.docker-server— файлы сервера.
Эти папки монтируются в соответствующие контейнеры.
-
В папку
docker-serverпоместите модули на языке lsFusion (файлы.lsfили папки с ними), а также дополнительные ресурсы (отчёты, Java-файлы, изображения, CSS, JS и т.д.). В этой же папке находятся серверные логи и файлsettings.properties.
-
Создание и запуск Docker-образа вашего проекта
Если ваш проект наследует Maven-модуль платформы lsFusion logics, вы можете использовать встроенные инструменты для создания Docker-образа и генерации файла compose.yaml.
Создание Docker-образа
-
Сборка образа:
Сборка Docker-образа привязана к фазам Maven и активируется профилем
docker.- На фазе
installобраз собирается и загружается в локальное хранилище. - На фазе
deployобраз загружается в публичный реестр (например, Docker Hub).
Для сборки образа выполните в папке проекта команду:
mvn install -P assemble,dockerЕсли вы хотите собрать образ на основе uber-jar с включенным в него сервером lsFusion, добавьте профиль
embed-server:mvn install -P assemble,embed-server,dockerПо умолчанию создается образ, специфичный для архитектуры и операционной системы Docker daemon. Для сборки мульти-архитектурного образа (linux/amd64 и linux/arm64), необходимо добавить профиль
multiarch. Работает только на фазеdeploy:mvn deploy -P assemble,docker,multiarch - На фазе
-
Загрузка образа в публичный реестр:
Чтобы собрать образ и загрузить его в Docker Hub, выполните:
mvn deploy -P assemble,dockerили (для uber-jar с сервером):
mvn deploy -P assemble,embed-server,docker -
Настройка имени образа:
По умолчанию имя образа имеет вид:
local/<artifactId>:<version>(artifactId, version - значения соответствующих тэгов в файле pom.xml модуля проекта). Вы можете переопределить часть имени или имя целиком через свойства Maven вpom.xml:<properties>
<docker.image.namespace>foo</docker.image.namespace>
<docker.image.repository>bar</docker.image.repository>
<docker.image.tag>1.0</docker.image.tag>
<!-- или -->
<docker.image.fullName>foo/bar:1.0</docker.image.fullName>
</properties>
Генерация и использование compose.yaml
-
Автоматическая генерация:
- При сборке проекта одной из приведённых выше команд с профилем
dockerMaven автоматически создаёт файлcompose.yaml. - Файл генерируется с подставленными версией платформы lsFusion и именем Docker-образа вашего проекта.
- Файл сохраняется в папке
targetили по пути, указанному в свойстве Mavendocker.compose.outputDirectory. Также содержимое файла выводится в консоль после сборки.
- При сборке проекта одной из приведённых выше команд с профилем
-
Запуск сгенерированного
compose.yaml:Запуск и настройка аналогичны шагам, описанным в разделе Запуск платформы lsFusion с некоторыми особенностями:
- Имя проекта Docker Compose по умолчанию равно значению тэга
artifactId. Чтобы генерировалось другое имя проекта, переопределите свойство Mavendocker.compose.projectName.
- Имя проекта Docker Compose по умолчанию равно значению тэга
Обновление версии PostgreSQL
В compose.yaml зафиксирована основная версия PostgreSQL. Основные версии PostgreSQL несовместимы между собой по формату данных на диске, поэтому после смены версии образа контейнер БД не запустится, пока база не будет мигрирована.
Начиная с версии 18 образ PostgreSQL хранит данные каждой версии в отдельной подпапке (например, 18/docker) и монтирует папку данных по пути /var/lib/postgresql (подробнее). В версиях до 18 данные лежали в корне папки docker-db, которая монтировалась по пути /var/lib/postgresql/data. Поэтому при переходе с версии 17 и ниже в compose.yaml, помимо версии образа, меняется и путь монтирования:
db:
image: postgres:18
volumes:
- ./docker-db:/var/lib/postgresql
При последующих переходах между версиями 18 и выше путь монтирования не меняется — только версия образа.
Перед миграцией любым из способов убедитесь, что у вас есть свежая резервная копия базы (например, копия папки docker-db, снятая при остановленных контейнерах).
Мигрировать базу можно одним из следующих способов:
-
Дамп и восстановление — рекомендуемый способ для большинства установок: новый кластер инициализируется образом штатно, а данные загружаются в него стандартным pg_dumpall:
docker compose exec db pg_dumpall -U postgres > backup.sql # при работающей старой версии;
# файл создаётся рядом с compose.yaml
docker compose down
# переименуйте папку docker-db (например, в docker-db-old) - старые данные останутся
# резервной копией, а новый контейнер создаст чистый кластер; обновите compose.yaml
docker compose up -d db
docker compose exec -T db psql -U postgres < backup.sql
docker compose up -d -
Скрипт миграции — для больших баз, когда дамп и восстановление занимают слишком много времени. Скрипт предназначен для стандартной установки, описанной на этой странице. Скачайте с центрального сервера скрипт
pg-migrate.bat(Windows) илиpg-migrate.sh(Linux) вместе сpg-migrate-container.shв папку$FUSION_DIR$. Пропишите вcompose.yamlновую версию образа (и, при переходе с 17 и ниже, новый путь монтирования), после чего запустите скрипт. Скрипт автоматизирует шаги, специфичные для Docker-образа: останавливает контейнеры, делает резервную копию папкиdocker-db(вdocker-db-backup), определяет исходную версию и раскладку данных и после миграции снова запускает контейнеры. Саму миграцию выполняет штатный pg_upgrade. Пользовательские настройкиpostgresql.confскрипт не переносит. Старый кластер останется в подпапкеdocker-dbсо старой версией — удалите его вместе с резервной копией после проверки работоспособности.
Для нестандартных конфигураций (репликация, изменённые образы или раскладка данных) используйте штатную процедуру обновления PostgreSQL.