4.9K
EspoCRM is a highly customizable open source CRM software.
Maintained by:
EspoCRM
Where to get help:
GitHub Issues, EspoCRM Documentation, EspoCRM Community
Dockerfile linksWhere to file issues:
https://github.com/espocrm/espocrm-docker/issues
Supported architectures: (more info)
amd64, arm32v5, arm32v6, arm32v7, arm64v8, i386
Published image artifact details:
repo-info repo's repos/espocrm/ directory (history)
(image metadata, transfer size, etc)
Image updates:
official-images repo's library/espocrm label
official-images repo's library/espocrm file (history)
Source of this description:
docs repo's espocrm/ directory (history)
EspoCRM is a highly customizable open source CRM software that allows users to see, enter and evaluate all your company relationships regardless of the type. People, companies, projects or opportunities - all in an easy and intuitive interface.
The basic pattern for starting an espocrm instance is:
$ docker run --name some-espocrm -d espocrm
docker network create espocrm-network && \
docker volume create espocrm-db && \
docker volume create espocrm-data && \
docker volume create espocrm-custom && \
docker volume create espocrm-custom-client && \
docker run \
--name espocrm-db \
--network espocrm-network \
--restart unless-stopped \
-e MARIADB_DATABASE=espocrm \
-e MARIADB_USER=espocrm \
-e MARIADB_PASSWORD=your_database_password \
-e MARIADB_ROOT_PASSWORD=your_root_password \
-v espocrm-db:/var/lib/mysql \
-d mariadb && \
docker run \
--name espocrm \
--network espocrm-network \
--restart unless-stopped \
-e ESPOCRM_DATABASE_PASSWORD=your_database_password \
-e ESPOCRM_ADMIN_USERNAME=admin \
-e ESPOCRM_ADMIN_PASSWORD=your_admin_password \
-v espocrm-data:/var/www/html/data \
-v espocrm-custom:/var/www/html/custom \
-v espocrm-custom-client:/var/www/html/client/custom \
-p 8080:80 \
-d espocrm && \
docker run \
--name espocrm-daemon \
--network espocrm-network \
--restart unless-stopped \
--volumes-from espocrm \
--entrypoint docker-daemon.sh \
-d espocrm
Then, access it via http://localhost:8080 or http://YOUR_IP_ADDRESS:8080 with credentials admin and your_admin_password.
To set a custom IP address or domain, pass the ESPOCRM_SITE_URL environment variable when running the container.
docker run \
--name espocrm \
--network espocrm-network \
-p 8080:80 \
-e ESPOCRM_DATABASE_USER=espocrm \
-e ESPOCRM_DATABASE_PASSWORD=your_database_password \
-e ESPOCRM_ADMIN_USERNAME=admin \
-e ESPOCRM_ADMIN_PASSWORD=your_admin_password \
-e ESPOCRM_SITE_URL=http://192.168.0.100:8080 \
-d espocrm
Then, access it via http://192.168.0.100:8080 with credentials admin and your_admin_password.
docker composeExample compose.yaml for espocrm:
services:
espocrm-db:
image: mariadb:latest
container_name: espocrm-db
environment:
MARIADB_ROOT_PASSWORD: your_root_password
MARIADB_DATABASE: espocrm
MARIADB_USER: espocrm
MARIADB_PASSWORD: your_database_password
volumes:
- espocrm-db:/var/lib/mysql
restart: unless-stopped
healthcheck:
test: [CMD, healthcheck.sh, --connect, --innodb_initialized]
interval: 20s
start_period: 10s
timeout: 10s
retries: 3
espocrm:
image: espocrm:latest
container_name: espocrm
environment:
ESPOCRM_DATABASE_HOST: espocrm-db
ESPOCRM_DATABASE_USER: espocrm
ESPOCRM_DATABASE_PASSWORD: your_database_password
ESPOCRM_ADMIN_USERNAME: admin
ESPOCRM_ADMIN_PASSWORD: your_admin_password
ESPOCRM_SITE_URL: http://localhost:8080
volumes:
- espocrm-data:/var/www/html/data
- espocrm-custom:/var/www/html/custom
- espocrm-custom-client:/var/www/html/client/custom
restart: unless-stopped
depends_on:
espocrm-db:
condition: service_healthy
healthcheck:
test: [CMD, bin/command, app-check]
start_period: 20s
interval: 60s
timeout: 20s
retries: 3
ports:
- 8080:80
espocrm-daemon:
image: espocrm:latest
container_name: espocrm-daemon
volumes_from:
- espocrm
restart: unless-stopped
entrypoint: docker-daemon.sh
depends_on:
espocrm:
condition: service_healthy
espocrm-websocket:
image: espocrm:latest
container_name: espocrm-websocket
environment:
ESPOCRM_CONFIG_USE_WEB_SOCKET: 'true'
ESPOCRM_CONFIG_WEB_SOCKET_URL: ws://localhost:8081
ESPOCRM_CONFIG_WEB_SOCKET_ZERO_M_Q_SUBSCRIBER_DSN: tcp://*:7777
ESPOCRM_CONFIG_WEB_SOCKET_ZERO_M_Q_SUBMISSION_DSN: tcp://espocrm-websocket:7777
volumes_from:
- espocrm
restart: unless-stopped
entrypoint: docker-websocket.sh
depends_on:
espocrm:
condition: service_healthy
ports:
- 8081:8080
volumes:
espocrm-db:
espocrm-data:
espocrm-custom:
espocrm-custom-client:
Run docker compose up, wait for it to initialize completely, and visit http://localhost:8080 or http://YOUR_IP_ADDRESS:8080 (as appropriate).
You can read the instructions for installing EspoCRM in conjunction with Traefik in the Docker Compose environment here.
You can read the instructions for installing EspoCRM in conjunction with Caddy in the Docker Compose environment here.
Keeping your EspoCRM installation updated ensures you have the latest features, security patches, and bug fixes. The upgrade process differs depending on whether you're using Docker Run or Docker Compose.
To upgrade EspoCRM when using Docker Run:
1. Pull the latest images:
docker pull mariadb
docker pull espocrm
2. Stop all running containers:
docker stop espocrm espocrm-db espocrm-daemon
3. Remove the old containers:
docker rm espocrm espocrm-db espocrm-daemon
4. Run the containers again with the same configuration as your original deployment (using the quick start or step by step commands from the Docker Run section).
To upgrade EspoCRM when using Docker Compose:
1. Navigate to your EspoCRM container directory.
2. Run the command:
docker compose pull && docker compose up -d
Within a few minutes the container will be upgraded to the latest version.
To securely pass sensitive information, append _FILE to any supported environment variable. When this suffix is used, the variable's value is read from a file inside the container instead of being specified directly. This can be used with Docker secrets stored in /run/secrets/<secret_name> files. For example:
$ docker run \
--name espocrm \
--network some-network \
-e ESPOCRM_DATABASE_PASSWORD_FILE=/run/secrets/espocrm_db_password \
-e ESPOCRM_ADMIN_PASSWORD_FILE=/run/secrets/espocrm_admin_password \
-d espocrm
These environment variables are used only for the initial installation. If you need to define configuration options at container startup, see Config Environments.
Database platform. The possible values: Mysql or Postgresql. The default value is Mysql.
Database host name for EspoCRM. The default value is espocrm-db.
Database port for EspoCRM. The default value is empty.
Database name for EspoCRM. The default value is espocrm.
Database user for EspoCRM. The default value is espocrm.
Database password for EspoCRM. The default value is password.
User name for an administrator of EspoCRM. The default value is admin.
User password for an administrator of EspoCRM. The default value is password.
The URL of EspoCRM. This option is very important for normal operating of EspoCRM. Examples: http://192.168.0.100:8080, http://my-crm.local.
The list of possible values and their default values can be found in EspoCRM Administrator panel > Settings.
ESPOCRM_LANGUAGEESPOCRM_DATE_FORMATESPOCRM_TIME_FORMATESPOCRM_TIME_ZONEESPOCRM_WEEK_STARTESPOCRM_DEFAULT_CURRENCYESPOCRM_THOUSAND_SEPARATORESPOCRM_DECIMAL_MARKThese environment variables are used to define EspoCRM configuration parameters on every container startup. The parameters that can be changed are defined in data/config.php or data/config-internal.php.
Config environment variables should be converted from camel case. For example:
The exportDisabled config option should be converted to ESPOCRM_CONFIG_EXPORT_DISABLED.
There are additional options to change the logger:
ESPOCRM_CONFIG_LOGGER__LEVEL: "DEBUG"ESPOCRM_CONFIG_LOGGER__MAX_FILE_NUMBER: 30ESPOCRM_CONFIG_LOGGER__PATH: "data/logs/espo.log"ESPOCRM_CONFIG_WEB_SOCKET_URL: 'wss://my-espocrm.com:8080'
ESPOCRM_CONFIG_EMAIL_MESSAGE_MAX_SIZE: 10
ESPOCRM_CONFIG_USE_WEB_SOCKET: 'true'
ESPOCRM_CONFIG_CURRENCY_DECIMAL_PLACES: 'null'
The espocrm images come in many flavors, each designed for a specific use case.
espocrm:<version>This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of.
Some of these tags may have names like trixie in them. These are the suite code names for releases of Debian and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian.
espocrm:<version>-alpineThis image is based on the popular Alpine Linux project, available in the alpine official image. Alpine Linux is much smaller than most distribution base images (~5MB), and thus leads to much slimmer images in general.
This variant is useful when final image size being as small as possible is your primary concern. The main caveat to note is that it does use musl libc instead of glibc and friends, so software will often run into issues depending on the depth of their libc requirements/assumptions. See this Hacker News comment thread for more discussion of the issues that might arise and some pro/con comparisons of using Alpine-based images.
To minimize image size, it's uncommon for additional related tools (such as git or bash) to be included in Alpine-based images. Using this image as a base, add the things you need in your own Dockerfile (see the alpine image description for examples of how to install packages if you are unfamiliar).
View license information for the software contained in this image.
As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).
Some additional license information which was able to be auto-detected might be found in the repo-info repository's espocrm/ directory.
As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within.
Content type
Image
Digest
sha256:177992035…
Size
245.9 MB
Last updated
1 day ago
docker pull espocrmDocker Official Images are a curated set of Docker open source and drop-in solution repositories.
These images have clear documentation, promote best practices, and are designed for the most common use cases.