SuiteCRM 7.15.2 on PHP 8.4 + Apache httpd (Docker image) — plus MariaDB 11.4, added on
top by compose.yml.
Docker image (Dockerfile): PHP 8.4-FPM (Alpine) + Apache httpd (reverse-proxied to
PHP-FPM via proxy_fcgi), all PHP extensions required by SuiteCRM, and the SuiteCRM
7.15.2 archive baked in (extracted into /var/www/html on first container start by
docker-entrypoint.sh). It does not include a database — MariaDB is not part of
this image.
compose.yml: orchestrates the full stack — the app service (built from this
image) plus a separate db service (mariadb:11.4), the network between them, the
persistent volumes (db_data, app_data), port mapping (8080:80), and the
environment variables that configure the app container (DB credentials, silent
install options, etc. — see below).
docker compose up -dOpen http://localhost:8080 and follow the installer.
Preconfigured database credentials in compose.yml:
- Host:
db - Database:
suitecrm - User:
suitecrm - Password:
suitecrm_password
By default the container extracts SuiteCRM and lets you complete setup through the
web installer at http://localhost:8080/install.php.
You can skip the web installer entirely by enabling the silent install mode, which
uses SuiteCRM's built-in silent installer (config_si.php) to configure the database
and admin account automatically on first boot.
Set SUITECRM_SILENT_INSTALL=true (in compose.yml or via docker run -e) together
with the following variables.
All
SUITECRM_INSTALL_*variables are only read once, the first time the container starts against an emptyapp_datavolume (i.e. noconfig.phpyet) withSUITECRM_SILENT_INSTALL=true. They are ignored on every subsequent start, including restarts of an already-installed instance — changing them afterwards has no effect unless you wipe theapp_datavolume.
| Variable | Default | Description |
|---|---|---|
SUITECRM_SILENT_INSTALL |
false |
Set to true to enable silent install (this is the only variable read on every start, since it's the switch itself) |
SUITECRM_INSTALL_DB_HOST |
db |
Database host |
SUITECRM_INSTALL_DB_PORT |
3306 |
Database port |
SUITECRM_INSTALL_DB_NAME |
suitecrm |
Database name (must already exist) |
SUITECRM_INSTALL_DB_USER |
suitecrm |
Database user (must already exist with access to the DB) |
SUITECRM_INSTALL_DB_PASSWORD |
(empty) | Database password |
SUITECRM_INSTALL_SITE_URL |
http://localhost:8080 |
Public URL of the instance |
SUITECRM_INSTALL_SYSTEM_NAME |
SuiteCRM |
Display name shown in the UI |
SUITECRM_INSTALL_ADMIN_PASSWORD |
admin |
Password for the admin user (username is always admin) |
SUITECRM_INSTALL_DEMO_DATA |
no |
Set to yes to populate demo data |
Also silent-install-only (see note above).
| Variable | Default | Description |
|---|---|---|
SUITECRM_INSTALL_DEFAULT_LANGUAGE |
en_us |
Default language pack code (e.g. it_it, de_de) assigned to new users/the system default |
SUITECRM_INSTALL_DEFAULT_CHARSET |
UTF-8 |
Default charset |
SUITECRM_INSTALL_CURRENCY_NAME |
US Dollar |
Default currency name |
SUITECRM_INSTALL_CURRENCY_SYMBOL |
$ |
Default currency symbol |
SUITECRM_INSTALL_CURRENCY_ISO4217 |
USD |
Default currency ISO 4217 code |
SUITECRM_INSTALL_CURRENCY_SIGNIFICANT_DIGITS |
2 |
Decimal digits for the default currency |
SUITECRM_INSTALL_NUMBER_GROUPING_SEPARATOR |
, |
Thousands separator |
SUITECRM_INSTALL_DECIMAL_SEPARATOR |
. |
Decimal separator |
SUITECRM_INSTALL_DISABLE_PERSISTENT_CONNECTIONS |
false |
Disable persistent DB connections |
Note: SUITECRM_INSTALL_DEFAULT_LANGUAGE only sets the system/user default language in
config.php; the login page shown to an anonymous visitor is still driven by the
browser's locale / the language dropdown, not by this setting.
An example compose.it.yml override with all Italian locale values is provided — see
Italian locale example below.
SuiteCRM 7.15.x's installer always writes a disabled search.ElasticSearch block
into config.php with hardcoded defaults (install/suite_install/Search.php), and the
legacy setup_fts_* keys once accepted by config_si.php are dead code in this version
(getFTSEngineType() in include/utils.php has no remaining callers). Setting them via
config_si.php has no effect. Elasticsearch must be configured after installation, either
through Admin > Search > Elasticsearch in the UI, or by editing config.php's
search.ElasticSearch array directly.
Notes:
- The database and DB user must already exist (e.g. provisioned by the
dbservice'sMYSQL_DATABASE/MYSQL_USERenv vars) — the installer will not try to create them. - Silent install only runs once, when
config.phpdoes not exist yet (e.g. on a freshapp_datavolume). It has no effect on an already-installed instance. - Change
SUITECRM_INSTALL_ADMIN_PASSWORDfor anything beyond local testing — the default value is intentionally weak.
compose.it.yml is a Compose override that sets all the Italian locale/currency values
(it_it, Euro, ./, separators) on top of the base compose.yml, and enables silent
install. Run it with:
docker compose -f compose.yml -f compose.it.yml up -ddocker build -t suitecrm:7.15.2 .
docker run -d -p 8080:80 --name suitecrm suitecrm:7.15.2Database and SuiteCRM data are persisted (db_data, app_data). If app_data is empty on startup, SuiteCRM is automatically copied from the container.