尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Docker实战 | 使用Docker部署EspoCRM开源客户关系管理平台
【Docker项目实战】使用Docker部署EspoCRM开源客户关系管理平台一、EspoCRM介绍1.1 EspoCRM 简介1.2 主要特点1.3 环境要求1.4 主要使用场景二、本次实践规划2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本四、下载EspoCRM镜像五、部署EspoCRM应用5.1 创建部署目录5.2 编辑部署文件5.3 创建EspoCRM容器5.4 查看EspoCRM容器状态六、访问EspoCRM服务七、EspoCRM基本使用7.1 设置中文7.2 创建客户信息7.3 创建知识库八、总结一、EspoCRM介绍1.1 EspoCRM 简介EspoCRM 是一款免费的开源客户关系管理CRM平台旨在帮助各种规模的企业有效地建立和维护客户关系。它提供了一套全面的工具用于存储、组织和管理所有与业务相关的客户信息包括潜在客户、联系人、销售机会、营销活动和支持案例等。该平台设计有一个直观且易于使用的界面使用户能够高效地管理其业务数据。1.2 主要特点开源透明度源代码开放允许用户审查并理解数据是如何被管理和处理的。高度定制化支持功能开发、自定义实体、字段、关系及按钮创建以适应特定业务需求。简洁的用户界面提供了一个美观、易用的界面缩短了学习曲线提高了工作效率。REST API 集成内置REST API使得与其他应用程序和服务的集成变得简单。社区支持拥有活跃的开发者社区为用户提供持续的支持和改进。1.3 环境要求EspoCRM 支持以下环境配置PHP 版本 8.2 至 8.4数据库管理系统MySQL 5.7 或更高版本MariaDB 10.2 或更高版本PostgreSQL 15 或更高版本1.4 主要使用场景初创企业与中小企业对于预算有限但需要专业级CRM解决方案的企业来说EspoCRM 提供了一个经济实惠的选择。开发人员和技术爱好者提供了丰富的API接口和扩展能力非常适合那些希望根据自身需求深度定制CRM系统的团队或个人。寻找免费CRM方案的组织如果一个组织正在寻找既安全又易于使用的CRM平台EspoCRM 可能是理想之选。二、本次实践规划2.1 本地环境规划本次实践为个人测试环境操作系统版本为Centos7。hostname内网 IP地址操作系统版本Docker版本项目名称VM-8-9-centos10.3.8.9CentOS Linux 726.1.3EspoCRM2.2 本次实践介绍1.本次实践部署环境为个人测试环境生产环境请谨慎2.在Docker环境下部署EspoCRM系统。三、本地环境检查3.1 检查Docker服务状态检查Docker服务是否正常运行确保Docker正常运行。[rootVM-8-9-centos ~]# systemctl status docker● docker.service - Docker Application Container Engine Loaded: loaded(/usr/lib/systemd/system/docker.service;enabled;vendor preset: disabled)Active: active(running)since Thu2025-01-0920:59:40 CST;4days ago Docs: https://docs.docker.com Main PID:1424(dockerd)Tasks:9Memory:1.0G CGroup: /system.slice/docker.service3.2 检查Docker版本检查Docker版本[rootVM-8-9-centos ~]# docker -vDocker version26.1.3, build b72abbb3.3 检查docker compose 版本检查Docker compose版本确保2.0以上版本。[rootVM-8-9-centos ~]# docker compose versionDocker Compose version v2.27.1四、下载EspoCRM镜像执行以下命令拉取以下EspoCRM镜像。[rootVM-8-9-centos ~]# docker pull espocrm/espocrm:8.4.2-apache8.4.2-apache: Pulling from espocrm/espocrm 302e3ee49805: Pull complete 07fc0890b857: Pull complete 141aa7d58c57: Pull complete 2720d4bca8b3: Pull complete 82deca51468c: Pull complete dec741dfa526: Pull complete e204b0efab94: Pull complete 0a9b8825ee85: Pull complete ef45e9da2633: Pull complete f2b46378d521: Pull complete 5c104459ddad: Pull complete 282db878d4dd: Pull complete 4a1f827cc210: Pull complete 7f944e13f551: Pull complete 2dc50b6f481b: Pull complete 00dbf19cac07: Pull complete 4f4fb700ef54: Pull complete 47470d9daec3: Pull complete a5a1714ac185: Pull complete Digest: sha256:9575d4904e6aee3b631f617e092e1dbed3019fdba57c5845735caa1714393342 Status: Downloaded newer imageforespocrm/espocrm:8.4.2-apache docker.io/espocrm/espocrm:8.4.2-apache执行以下命令拉取mysql:8镜像。[rootVM-8-9-centos ~]# docker pull mysql:88: Pulling from library/mysql 2c0a233485c3: Pull complete 6f5cca38a221: Pull complete d7c84b66ede0: Pull complete 299f6f88c6cf: Pull complete d39eae8f9927: Pull complete ec0557361569: Pull complete f6d0f80cb1be: Pull complete d496030b710c: Pull complete 4d755d8c89d1: Pull complete 699d8e3dc44b: Pull complete Digest: sha256:106d5197fd8e4892980469ad42eb20f7a336bd81509aae4ee175d852f5cc4565 Status: Downloaded newer imageformysql:8 docker.io/library/mysql:8五、部署EspoCRM应用5.1 创建部署目录创建部署目录mkdir-p/data/espocrmcd/data/espocrm5.2 编辑部署文件本次实践使用docker compose方式部署在部署目录下创建docker-compose.yaml文件其中宿主机映射端口等可以自定义配置。vimdocker-compose.yamlversion:3services:mysql:image:mysql:8container_name:espocrm-mysqlenvironment:MYSQL_ROOT_PASSWORD:root_passwordMYSQL_DATABASE:espocrmMYSQL_USER:espocrmMYSQL_PASSWORD:database_passwordvolumes:-./data:/var/lib/mysqlrestart:alwayshealthcheck:test:[CMD,mysqladmin,ping,-p database_password]retries:3timeout:5sespocrm:image:espocrm/espocrmcontainer_name:espocrm-webenvironment:ESPOCRM_DATABASE_PLATFORM:MysqlESPOCRM_DATABASE_HOST:mysqlESPOCRM_DATABASE_USER:espocrmESPOCRM_DATABASE_PASSWORD:database_passwordESPOCRM_ADMIN_USERNAME:adminESPOCRM_ADMIN_PASSWORD:passwordESPOCRM_SITE_URL:http://10.3.8.9:9600volumes:-./web:/var/www/htmlrestart:alwaysports:-9600:80depends_on:mysql:condition:service_healthyespocrm-daemon:image:espocrm/espocrmcontainer_name:espocrm-daemonvolumes:-./web:/var/www/htmlrestart:alwaysentrypoint:docker-daemon.shespocrm-websocket:image:espocrm/espocrmcontainer_name:espocrm-websocketenvironment:ESPOCRM_CONFIG_USE_WEB_SOCKET:trueESPOCRM_CONFIG_WEB_SOCKET_URL:ws://10.3.8.9:8081ESPOCRM_CONFIG_WEB_SOCKET_ZERO_M_Q_SUBSCRIBER_DSN:tcp://*:7777ESPOCRM_CONFIG_WEB_SOCKET_ZERO_M_Q_SUBMISSION_DSN:tcp://espocrm-websocket:7777volumes:-./web:/var/www/htmlrestart:alwaysentrypoint:docker-websocket.shports:-8081:8080变量名称说明示例值MYSQL_ROOT_PASSWORDMySQL 根用户密码root_passwordMYSQL_DATABASE创建的数据库名称espocrmMYSQL_USER创建的数据库用户名espocrmMYSQL_PASSWORD创建的数据库用户的密码database_passwordESPOCRM_DATABASE_PLATFORMEspoCRM 使用的数据库平台类型MysqlESPOCRM_DATABASE_HOST数据库主机名或IP地址mysqlESPOCRM_DATABASE_USEREspoCRM 连接数据库使用的用户名espocrmESPOCRM_DATABASE_PASSWORDEspoCRM 连接数据库使用的密码database_passwordESPOCRM_ADMIN_USERNAMEEspoCRM 管理员用户名adminESPOCRM_ADMIN_PASSWORDEspoCRM 管理员登录密码passwordESPOCRM_SITE_URLEspoCRM 应用的URL用于设置内部和外部链接http://10.3.8.9:9600ESPOCRM_CONFIG_USE_WEB_SOCKET是否使用WebSockets进行实时通信trueESPOCRM_CONFIG_WEB_SOCKET_URLWebSocket服务器的URLws://10.3.8.9:8081ESPOCRM_CONFIG_WEB_SOCKET_ZERO_M_Q_SUBSCRIBER_DSNWebSocket ZeroMQ 订阅者DSN (数据源名称)tcp://*:7777ESPOCRM_CONFIG_WEB_SOCKET_ZERO_M_Q_SUBMISSION_DSNWebSocket ZeroMQ 提交DSN指向WebSocket容器的服务发现地址tcp://espocrm-websocket:77775.3 创建EspoCRM容器执行以下命令创建EspoCRM容器。[rootVM-8-9-centos espocrm]# docker compose up -dWARN[0000]/data/espocrm/docker-compose.yaml:versionis obsolete[]Running3/3 ✔ espocrm-websocket Pulled0.9s ✔ espocrm Pulled1.3s ✔ espocrm-daemon Pulled1.0s[]Running5/5 ✔ Network espocrm_default Created0.1s ✔ Container espocrm-mysql Healthy31.5s ✔ Container espocrm-daemon Started1.0s ✔ Container espocrm-websocket Started1.0s ✔ Container espocrm-web Started31.6s5.4 查看EspoCRM容器状态检查EspoCRM容器状态状态确保EspoCRM容器正常启动。[rootVM-8-9-centos espocrm]# docker compose psWARN[0000]/data/espocrm/docker-compose.yaml:versionis obsolete NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS espocrm-daemon espocrm/espocrmdocker-daemon.shespocrm-daemon About a minute ago Up32seconds80/tcp espocrm-mysql mysql:8docker-entrypoint.s…mysql About a minute ago Up About a minute(healthy)3306/tcp,33060/tcp espocrm-web espocrm/espocrmdocker-entrypoint.s…espocrm About a minute ago Up58seconds0.0.0.0:9600-80/tcp, :::9600-80/tcp espocrm-websocket espocrm/espocrmdocker-websocket.shespocrm-websocket About a minute ago Up32seconds80/tcp,0.0.0.0:8081-8080/tcp, :::8081-8080/tcp六、访问EspoCRM服务访问地址http://IP地址:9600将IP替换为自己服务器IP地址。如果无法访问到以下页面则检查宿主机的防火墙是否关闭或者放行相关端口云服务器则还需要设置安全组规则。默认的账号/密码 admin/password七、EspoCRM基本使用7.1 设置中文右上角进入设置界面——Preferences选择语言为Simplified Chinese (China)时区选择 Asia/Shanghai确认保存即可。7.2 创建客户信息在客户管理模块点击“创建客户”自定义填写客户信息如下所示7.3 创建知识库在知识库模块中点击“创建文章”填写文章名称和内容保存即可。浏览知识库中文章内容如下所示八、总结在本次 Docker 部署 EspoCRM 的实战中我们成功地将 EspoCRM 客户关系管理平台容器化实现了快速部署和环境一致性的保证。通过配置 Docker Compose 文件我们简化了数据库和服务之间的集成并确保了 EspoCRM 可以稳定运行于任何支持 Docker 的环境中。这一实践不仅验证了 EspoCRM 作为开源 CRM 解决方案的灵活性和强大功能同时也展示了 Docker 在应用程序部署中的高效性和便捷性。
RELATED

相关推荐

Godot 2.5D 游戏开发实战:基于 mono/2.5d 演示项目的 C 插件实现解析

Godot 2.5D 游戏开发实战:基于 mono/2.5d 演示项目的 C 插件实现解析

示例工程 【免费下载链接】godot-demo-projects Demonstration and Template Projects 项目地址: https://gitcode.com/GitHub_Trending/go/godot-demo-projects 点击查看 免费下载 2.5D 是经典而实用的视觉表现手法:让游戏对象拥有三维的空间逻辑&…

📅 2026/10/3 17:27:11
VueUse useJwt 响应式 JWT 解码指南:在 Vue 3 中优雅地解析 Token

VueUse useJwt 响应式 JWT 解码指南:在 Vue 3 中优雅地解析 Token

前端 【免费下载链接】vueuse Collection of essential Vue Composition Utilities for Vue 3 项目地址: https://gitcode.com/gh_mirrors/vu/vueuse 点击查看 免费下载 导读 useJwt 是 VueUse Integrations 集合中用于**响应式解码 JWT(JSON Web Toke…

📅 2026/10/3 17:27:11
Bitnami Kafka Helm Chart 演进全解析:从 32.x 版本变更记录看生产级 Kafka 运维实践

Bitnami Kafka Helm Chart 演进全解析:从 32.x 版本变更记录看生产级 Kafka 运维实践

云原生容器编排 【免费下载链接】charts Bitnami Helm Charts 项目地址: https://gitcode.com/GitHub_Trending/charts30/charts 点击查看 免费下载 本篇技术指南以当前仓库 bitnami/kafka/CHANGELOG.md 为主线,结合 Chart.yaml、values.yaml 与 templa…

📅 2026/10/3 17:27:11
MORE NEWS

更多资讯

📰

pigeon_generator 鸿蒙适配实战:Flutter 插件桥接层设计与迁移指南

从把 Flutter 插件往鸿蒙上迁移的那一周开始,我几乎每天都在跟桥接代码较劲。真正让我停下来重新想了三天的,就是 pigeon_generator——准确说,是“pigeon_generator 生成的桥接代码,到底能不能在鸿蒙上用”这件事。如果你也在做 …

📰

Python多模型对比:盾构滚刀状态识别实战

简介:这份资源面向机械加工与智能制造方向的本科生、研究生及算法入门者,提供一套基于机器学习的滚刀状态识别完整项目,可用于毕业设计、课程设计或期末大作业。项目以Python实现,覆盖CNN、LSTM、GRU、SVM、随机森林等多种模型&am…

📰

孪生自注意力网络高光谱变化检测Python源码实战

简介:本资源为基于孪生自注意力网络的高光谱图像变化检测系统,面向计算机、人工智能、通信、遥感等专业的在校学生、教师及企业研发人员,可用于课程设计、毕业设计、大作业或初期项目立项演示,帮助理解高光谱变化检测的模型搭建与…

📰

Scissor算法实战:用bulk表型精准锁定单细胞关键亚群

做单细胞数据分析的人,迟早会遇到一个绕不开的尴尬:聚类注释做得再漂亮,细胞亚群看得再清楚,合作方一句“哪些细胞跟患者生存或者用药响应最相关”,就能让你卡在当场。常规做法是拿细胞比例和分组做差异检验&#xff0…

📰

MySQL数据库基础:从索引原理到事务隔离与连接池排查实践

“MySQL 数据库基础”——每次有人在后台带着这个关键词进来,我都想认真聊几句。很多人觉得“基础”不过就是背几条SQL、会建库建表,我一开始也是这么过来的,后来才发现,真到了线上,一条慢查询、一次乱码、一个死锁&am…

📰

SPSS实战:多指标联合诊断ROC曲线分析,5步搞定Logistic回归

SPSS实战:5步搞定多指标联合诊断的ROC曲线分析(附Logistic回归教程)我经常被临床科室的同事拦住问一个问题:手上已经有两三个化验指标,单独做ROC曲线,AUC都只有0.7上下,有没有办法把它们合在一起…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬