【Docker项目实战】使用Docker部署EspoCRM开源客户关系管理平台
【摘要】 【Docker项目实战】使用Docker部署EspoCRM开源客户关系管理平台
一、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-centos | 10.3.8.9 | CentOS Linux 7 | 26.1.3 | EspoCRM |
2.2 本次实践介绍
1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Docker环境下部署EspoCRM系统。
三、本地环境检查
3.1 检查Docker服务状态
检查Docker服务是否正常运行,确保Docker正常运行。
[root@VM-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 Thu 2025-01-09 20:59:40 CST; 4 days ago
Docs: https://docs.docker.com
Main PID: 1424 (dockerd)
Tasks: 9
Memory: 1.0G
CGroup: /system.slice/docker.service
3.2 检查Docker版本
检查Docker版本
[root@VM-8-9-centos ~]# docker -v
Docker version 26.1.3, build b72abbb
3.3 检查docker compose 版本
检查Docker compose版本,确保2.0以上版本。
[root@VM-8-9-centos ~]# docker compose version
Docker Compose version v2.27.1
四、下载EspoCRM镜像
执行以下命令,拉取以下EspoCRM镜像。
[root@VM-8-9-centos ~]# docker pull espocrm/espocrm:8.4.2-apache
8.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 image for espocrm/espocrm:8.4.2-apache
docker.io/espocrm/espocrm:8.4.2-apache
执行以下命令,拉取mysql:8镜像。
[root@VM-8-9-centos ~]# docker pull mysql:8
8: 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 image for mysql:8
docker.io/library/mysql:8
五、部署EspoCRM应用
5.1 创建部署目录
- 创建部署目录
mkdir -p /data/espocrm && cd /data/espocrm
5.2 编辑部署文件
本次实践使用docker compose方式部署,在部署目录下,创建docker-compose.yaml文件,其中宿主机映射端口等可以自定义配置。
vim docker-compose.yaml
version: '3'
services:
mysql:
image: mysql:8
container_name: espocrm-mysql
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: espocrm
MYSQL_USER: espocrm
MYSQL_PASSWORD: database_password
volumes:
- ./data:/var/lib/mysql
restart: always
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-p database_password"]
retries: 3
timeout: 5s
espocrm:
image: espocrm/espocrm
container_name: espocrm-web
environment:
ESPOCRM_DATABASE_PLATFORM: Mysql
ESPOCRM_DATABASE_HOST: mysql
ESPOCRM_DATABASE_USER: espocrm
ESPOCRM_DATABASE_PASSWORD: database_password
ESPOCRM_ADMIN_USERNAME: admin
ESPOCRM_ADMIN_PASSWORD: password
ESPOCRM_SITE_URL: "http://10.3.8.9:9600"
volumes:
- ./web:/var/www/html
restart: always
ports:
- 9600:80
depends_on:
mysql:
condition: service_healthy
espocrm-daemon:
image: espocrm/espocrm
container_name: espocrm-daemon
volumes:
- ./web:/var/www/html
restart: always
entrypoint: docker-daemon.sh
espocrm-websocket:
image: espocrm/espocrm
container_name: espocrm-websocket
environment:
ESPOCRM_CONFIG_USE_WEB_SOCKET: "true"
ESPOCRM_CONFIG_WEB_SOCKET_URL: "ws://10.3.8.9: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:
- ./web:/var/www/html
restart: always
entrypoint: docker-websocket.sh
ports:
- 8081:8080
变量名称 | 说明 | 示例值 |
---|---|---|
MYSQL_ROOT_PASSWORD | MySQL 根用户密码 | root_password |
MYSQL_DATABASE | 创建的数据库名称 | espocrm |
MYSQL_USER | 创建的数据库用户名 | espocrm |
MYSQL_PASSWORD | 创建的数据库用户的密码 | database_password |
ESPOCRM_DATABASE_PLATFORM | EspoCRM 使用的数据库平台类型 | Mysql |
ESPOCRM_DATABASE_HOST | 数据库主机名或IP地址 | mysql |
ESPOCRM_DATABASE_USER | EspoCRM 连接数据库使用的用户名 | espocrm |
ESPOCRM_DATABASE_PASSWORD | EspoCRM 连接数据库使用的密码 | database_password |
ESPOCRM_ADMIN_USERNAME | EspoCRM 管理员用户名 | admin |
ESPOCRM_ADMIN_PASSWORD | EspoCRM 管理员登录密码 | password |
ESPOCRM_SITE_URL | EspoCRM 应用的URL,用于设置内部和外部链接 | http://10.3.8.9:9600 |
ESPOCRM_CONFIG_USE_WEB_SOCKET | 是否使用WebSockets进行实时通信 | true |
ESPOCRM_CONFIG_WEB_SOCKET_URL | WebSocket服务器的URL | ws://10.3.8.9:8081 |
ESPOCRM_CONFIG_WEB_SOCKET_ZERO_M_Q_SUBSCRIBER_DSN | WebSocket ZeroMQ 订阅者DSN (数据源名称) | tcp://*:7777 |
ESPOCRM_CONFIG_WEB_SOCKET_ZERO_M_Q_SUBMISSION_DSN | WebSocket ZeroMQ 提交DSN,指向WebSocket容器的服务发现地址 | tcp://espocrm-websocket:7777 |
5.3 创建EspoCRM容器
执行以下命令,创建EspoCRM容器。
[root@VM-8-9-centos espocrm]# docker compose up -d
WARN[0000] /data/espocrm/docker-compose.yaml: `version` is obsolete
[+] Running 3/3
✔ espocrm-websocket Pulled 0.9s
✔ espocrm Pulled 1.3s
✔ espocrm-daemon Pulled 1.0s
[+] Running 5/5
✔ Network espocrm_default Created 0.1s
✔ Container espocrm-mysql Healthy 31.5s
✔ Container espocrm-daemon Started 1.0s
✔ Container espocrm-websocket Started 1.0s
✔ Container espocrm-web Started 31.6s
5.4 查看EspoCRM容器状态
检查EspoCRM容器状态状态,确保EspoCRM容器正常启动。
[root@VM-8-9-centos espocrm]# docker compose ps
WARN[0000] /data/espocrm/docker-compose.yaml: `version` is obsolete
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
espocrm-daemon espocrm/espocrm "docker-daemon.sh" espocrm-daemon About a minute ago Up 32 seconds 80/tcp
espocrm-mysql mysql:8 "docker-entrypoint.s…" mysql About a minute ago Up About a minute (healthy) 3306/tcp, 33060/tcp
espocrm-web espocrm/espocrm "docker-entrypoint.s…" espocrm About a minute ago Up 58 seconds 0.0.0.0:9600->80/tcp, :::9600->80/tcp
espocrm-websocket espocrm/espocrm "docker-websocket.sh" espocrm-websocket About a minute ago Up 32 seconds 80/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 在应用程序部署中的高效性和便捷性。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)