JoomEngine
The Engine That builds to 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
Joomla (official base image)
JCB preloaded in the image
Safe one-time install (idempotent)
Automatic Joomla + JCB install on first run
Deterministic, fail-fast startup (`set -euo pipefail`)
Optional extension install (URL or path)
Optional Joomla CLI automation
Runs as `www-data` (no root runtime)
SMTP configuration support
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)
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 accepts hostname or hostname:port.
Admin (defaults)
Username: joomengine
Password: joomengine@secure
Permissions
Runs as www-data. Ownership is corrected automatically for volume mounts.
Adapt your fork of JoomEngine's repository to build your own component's offical docker image - like never before.