Введение
Разработка модулей для Liferay может сталкиваться с рядом технических трудностей на этапе настройки окружения. Среди них:
- отсутствие нужных системных пакетов или Java в ОС;
- сложность очистки портала или базы данных;
- нестабильность среды после неудачного деплоя модуля.
Чтобы минимизировать эти проблемы и сократить время на настройку, было принято решение создать docker-compose конфигурацию, позволяющую быстро и удобно развернуть портал Liferay с базой данных PostgreSQL в изолированном окружении.
Структура решения
Docker Compose-файл описывает два сервиса:
- db — контейнер с PostgreSQL;
- liferay — контейнер с самим порталом.
Также настроены постоянные тома для хранения данных и удобной работы с модулями.
Пример docker-compose.yml
version: '3'
services:
db:
image: postgres:16
container_name: liferay-db
environment:
- POSTGRES_USER=liferay
- POSTGRES_PASSWORD=liferay
- POSTGRES_DB=liferay
volumes:
- ./volumes/pg_data:/var/lib/postgresql/data
ports:
- "5432:5432"
liferay:
image: liferay:latest
container_name: liferay-app
ports:
- "8080:8080"
- "9990:9990"
- "5005:5005"
volumes:
- ./volumes/liferay_deploy:/opt/liferay/deploy
- ./volumes/liferay_osgi:/opt/liferay/osgi
- ./volumes/liferay_data:/opt/liferay/data
depends_on:
- db
Ключевые моменты
1. Отделённая база данных
PostgreSQL запускается отдельно от портала. Это упрощает администрирование, позволяет легко сбрасывать или переносить базу, а также использовать привычные инструменты для работы с СУБД.
2. Перенаправленные порты
Открыты порты:
- 8080 — веб-интерфейс Liferay;
- 9990 — доступ к административному интерфейсу (например, Gogo shell через Telnet);
- 5005 — подключение отладчика (Remote JVM Debug).
3. Подключаемые тома
Тома позволяют:
- быстро сбрасывать и пересоздавать окружение без потери важных данных;
- автоматически деплоить .jar и .war модули из liferay_deploy;
- сохранять данные и конфигурации между перезапусками.
./volumes/
├── pg_data/ # данные PostgreSQL
├── liferay_data/ # данные и конфиги портала
├── liferay_deploy/ # директория для деплоя модулей
├── liferay_osgi/ # директория с модулями OSGi
Зачем это нужно
Ранее, при локальной разработке, запуск портала мог осложняться:
- отсутствием нужных Java или пакетов в системе;
- повреждённой базой данных после неудачного тестирования модуля;
- невозможностью быстро сбросить портал до "чистого" состояния.
С переходом на контейнерную разработку с Docker Compose:
- запуск портала стал возможен одной командой: docker-compose up;
- откат изменений одной командой;
- модули можно деплоить просто копированием в volumes/liferay_deploy/;
- появилась единая изолированная среда, одинаково работающая у всей команды.
Использование
- Склонируйте docker-compose.yml и создайте структуру директорий:
mkdir -p volumes/pg_data volumes/liferay_deploy volumes/liferay_osgi volumes/liferay_data
- Запустите: docker-compose up -d
- Перейдите на http://localhost:8080, чтобы открыть портал.
- Для деплоя модуля скопируйте .jar или .war в volumes/liferay_deploy.
- Чтобы сбросить портал и базу: docker-compose down -v