v0.9.1
Highlights
- Better port resolution — Previously, Docker would assign ports that only incremented within a range, even when lower ports became available again. Ports are now resolved to the lowest available port in the declared range, keeping port assignments predictable and consistent across restarts.
- Keycloak service — Full Keycloak IdP service with SAML configuration, security artifact generation, persistent storage, and documentation
- OpenLDAP service — New LDAP directory service available as a compose recipe
- Database import overhaul — Automatic archive decompression - many more formats are now compatible
Added
- Automatic port resolution (LPD-84200) — Ports are now resolved to the lowest available port in a declared range, replacing Docker's default behavior of only incrementing
- Keycloak service (LPD-73843) — Compose recipe, gradle task for preparing security artifacts (keystores, SAML config), OSGi configs, port configuration, volume for H2 database persistence, and full documentation
- OpenLDAP service (LPD-73800) — New
ldapcompose recipe with LDIF seed data - Database dump decompression (LPD-77149) —
importDatabaseDumpsnow auto-decompresses.gz,.zip, and other archive formats - Mail OSGi configs (LPD-82628) — Mail settings required by 2025.Q4+ added to both single-node and cluster configurations
Improved
- README URLs and port notes (LPD-83991) — README now shows usable URLs (with port) by default and notes when a port has been updated
- Nightly bundle support (LPD-82018) — Falls back to
.liferay-versionfortargetPlatformVersionwhen nightly bundles lack a real BOM; normalizes hyphens to dots in version strings - Database credentials in README (LPD-82534) — Added default username/password for each supported database
Fixed
- SQL Server marker file (LPD-83583) — Added missing marker file to the SQL Server entrypoint, ensuring database creation is properly tracked
Maintenance
- BATS test framework (LPD-77149) — Vendored BATS, added
lec batscommand, created database import tests, and added a CI workflow for validating imports - End-to-end tests (LPD-84202) — E2E test for Liferay/MySQL/Elasticsearch with dynamic port lookup, shared BATS helpers, and a GitHub Actions workflow
- Shellcheck compliance (LPD-83583) — Fixed shell script warnings
executeSQLQuerywrapper task (LPD-77149) — Convenience task for running ad-hoc SQL queries
PRs
- LPD-82628 Mail configurations are not applied automatically for portal version 2025.q4 and above by @annasuszter in #243
- LPD-82628 Mail configurations are not applied automatically for portal version 2025.q4 and above by @annasuszter in #246
- LPD-77149 Expand general database archive support by @drewbrokke in #247
- LPD-77149 Expand general database archive support by @drewbrokke in #248
- LPD-82534 Add username and password of databases to README by @kyle-miho in #245
- LPD-83583 Add marker file after creating new sqlserver database by @anthony-chu in #249
- LPD-82018 Composer printBundleInfo is inaccurate when using nightly by @drewbrokke in #250
- LPD-73843 Add support for Keycloak as IdP by @anthony-chu in #244
- LPD-83991 Add usable default URLs to the README for Keycloak by @anthony-chu in #253
- LPD-73800 Technical Task | [Liferay Up] LDAP (OpenLDAP) support by @drewbrokke in #255
- LPD-84202 Technical Task | Create E2E test by @drewbrokke in #257
- LPD-84200 Technical Task | Consistent port values by @drewbrokke in #256
Full Changelog: v0.9.0...v0.9.1