JoomEngine
The Engine That builds the Offical JCB docker images
JoomEngine delivers the official Docker environment for Joomla Component Builder (JCB).
Each image ships with Joomla and JCB pre-installed, giving you a ready-to-run development environment that can be configured through environment variables and optional CLI automation.
What You Get
Built on the Official Joomla Image
No forks. No custom hacks. Pure upstream foundation.
JCB Preloaded & Ready
Zero manual installation required.
Idempotent First-Run Installer
Safe to restart. Never installs twice.
Automatic First-Run Provisioning
Joomla and JCB installed instantly on launch.
Fail-Fast, Deterministic Startup
Strict error handling from the first instruction.
Extension Auto-Install Support
Install from URL or local path at startup.
Built-In Joomla CLI Automation
Trigger CLI workflows during container startup.
Non-Root Runtime (www-data)
Secure by default. No root execution.
Integrated SMTP Configuration
Production-ready mail setup via environment variables.
How it Works
- Entry point runs with strict error handling
- If Joomla isn’t installed and required variables exist → Joomla installs, DB verified, admin configured
- Once configured (`configuration.php`) → extensions (optional), JCB installs, SMTP applied, CLI commands run
- Continues running as `www-data`
-
Fail-fast (no silent fallbacks)
-
Idempotent (no repeated installs)
-
Safe restarts with persistent volumes
-
Deterministic outcomes
Quickstart
docker pull octoleo/joomengine:latest docker pull octoleo/joomengine:6.1.3 docker pull octoleo/joomengine:6.1.3-php8.2-apache
Tip: latest points to the highest stable release (Apache variant, highest supported PHP).
http://localhost:8080
After running compose, open the site in your browser.
services:
joomla:
image: octoleo/joomengine:latest
ports:
- "8080:80"
environment:
JOOMLA_DB_HOST: mariadb:3306
JOOMLA_DB_USER: joomengine
JOOMLA_DB_NAME: joomengine
JOOMLA_DB_PASSWORD: secure_password12345
depends_on:
- mariadb
volumes:
- joomla_data:/var/www/html
mariadb:
image: mariadb:latest
environment:
MARIADB_USER: joomengine
MARIADB_DATABASE: joomengine
MARIADB_PASSWORD: secure_password12345
MARIADB_ROOT_PASSWORD: your_root_secure_password12345
volumes:
- mariadb_data:/var/lib/mysql
volumes:
joomla_data:
mariadb_data:"Automation" (Run JCB commands automatically)
environment: JOOMLA_CLI_COMMANDS: "cache:clean;extension:list --type=component"
Commands are semicolon-separated and passed to cli/joomla.php.
What happens
- Runs as www-data
- Executes after install is ready
- Failures stop the container (safe by default)
Configuration
Required (DB Host)
JOOMLA_DB_HOST or MYSQL_PORT_3306_TCP
Required (DB Password)
JOOMLA_DB_PASSWORD or JOOMLA_DB_PASSWORD_FILE (secrets)
Optional Extensions
JOOMLA_EXTENSIONS_URLS JOOMLA_EXTENSIONS_PATHS (semicolon-separated)
Permissions
Runs as www-data. Ownership is corrected automatically for volume mounts.)
Environment Variables
JOOMLA_DB_USER=joomengine JOOMLA_DB_NAME=joomengine JOOMLA_DB_TYPE=mysqli JOOMLA_DB_PREFIX=joom_ JOOMLA_SITE_NAME="Joomla Component Builder - JoomEngine" JOOMLA_ADMIN_USER="JoomEngine Hero" JOOMLA_ADMIN_USERNAME=joomengine JOOMLA_ADMIN_PASSWORD=joomengine@secure JOOMLA_ADMIN_EMAIL=joomengine@example.com
SMTP
JOOMLA_SMTP_HOST=hostname # or JOOMLA_SMTP_HOST=hostname:port
Admin (Defaults)
Username: joomengine Password: joomengine@secure
Adapt your fork of JoomEngine's repository to build your own component's offical docker image - like never before.