null

Ускорение разработки Liferay-модулей с помощью Docker Compose

Введение


Разработка модулей для 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/;
  • появилась единая изолированная среда, одинаково работающая у всей команды.

Использование

  1. Склонируйте docker-compose.yml и создайте структуру директорий: 
    mkdir -p volumes/pg_data volumes/liferay_deploy volumes/liferay_osgi volumes/liferay_data
  2. Запустите: docker-compose up -d
  3. Перейдите на http://localhost:8080, чтобы открыть портал.
  4. Для деплоя модуля скопируйте .jar или .war в volumes/liferay_deploy.
  5. Чтобы сбросить портал и базу: docker-compose down -v
Next