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.
Versioning (Bitnami-style): Git tag vX.Y.Z-rN → Docker tags X.Y.Z-rN, X.Y.Z, X.Y, X (senza latest). Esempio: v7.15.2-r0 → 7.15.2-r0, 7.15.2, 7.15, 7; v7.15.2-r1 aggiorna gli alias flottanti alla revisione r1; v7.15.3-r0 resetta r a 0. SUITECRM_VERSION (i primi 3 numeri) è passato come build-arg in CI (Dockerfile:4).
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_DEFAULT_DATE_FORMAT |
m/d/Y |
Default date format (m/d/Y, d/m/Y, Y-m-d, etc.) — install/install_utils.php:1682, performSetup.php:629 |
SUITECRM_INSTALL_DEFAULT_TIME_FORMAT |
h:ia |
Default time format (h:ia, H:i, H:i:s, etc.) — install/install_utils.php:1682, performSetup.php:632 |
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:
The image bundles the official it_IT language pack (SuiteCRM community
translations, 7.15 line). docker-entrypoint.sh registers the language with the
installer via install/lang.config.php for silent installs and then installs
the pack through ModuleInstall/PackageManager (as Admin > Module Loader would),
so it is tracked in upgrade_history and visible in Admin > Module Loader /
Admin > Upgrade History. No manual Module Loader step is needed when
SUITECRM_INSTALL_DEFAULT_LANGUAGE=it_it.
docker compose -f compose.yml -f compose.it.yml up -d# Build locale: SUITECRM_VERSION è estratto dal tag vX.Y.Z-rN in CI; in locale passalo esplicitamente
docker build --build-arg SUITECRM_VERSION=7.15.2 -t suitecrm:7.15.2-r0 .
docker run -d -p 8080:80 --name suitecrm suitecrm:7.15.2-r0
# Tag GHCR pubblicati da CI (senza latest): 7.15.2-r0, 7.15.2, 7.15, 7Database and SuiteCRM data are persisted (db_data, app_data). If app_data is empty on startup, SuiteCRM is automatically copied from the container.
Generic deployment manifests live under k8s/:
k8s/- plain YAML + Helm values (Perconaps-db), single generic instance with placeholder values. Seek8s/README.mdfor the runbook.k8s/kustomize/- Kustomize examples with in-cluster MariaDB and NGINX/Traefik overlays, for standalone users.