前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Docker项目实战】使用Docker部署EspoCRM开源客户关系管理平台

【Docker项目实战】使用Docker部署EspoCRM开源客户关系管理平台

原创
作者头像
江湖有缘
发布于 2025-04-28 07:22:23
发布于 2025-04-28 07:22:23
1730
举报
文章被收录于专栏:Linux成长之路Linux成长之路

一、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正常运行。

代码语言:bash
AI代码解释
复制
[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版本

代码语言:bash
AI代码解释
复制
[root@VM-8-9-centos ~]# docker -v
Docker version 26.1.3, build b72abbb

3.3 检查docker compose 版本

检查Docker compose版本,确保2.0以上版本。

代码语言:bash
AI代码解释
复制
[root@VM-8-9-centos ~]# docker compose version
Docker Compose version v2.27.1

四、下载EspoCRM镜像

执行以下命令,拉取以下EspoCRM镜像。

代码语言:bash
AI代码解释
复制
[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镜像。

代码语言:bash
AI代码解释
复制
[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 创建部署目录

  • 创建部署目录
代码语言:bash
AI代码解释
复制
mkdir -p /data/espocrm  && cd /data/espocrm 

5.2 编辑部署文件

本次实践使用docker compose方式部署,在部署目录下,创建docker-compose.yaml文件,其中宿主机映射端口等可以自定义配置。

代码语言:bash
AI代码解释
复制
vim docker-compose.yaml
代码语言:yaml
AI代码解释
复制
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容器

代码语言:bash
AI代码解释
复制
[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容器正常启动。

代码语言:bash
AI代码解释
复制
[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 在应用程序部署中的高效性和便捷性。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
javaweb-青橙项目-1-76
序列1-地址:https://github.com/Jonekaka/javaweb-qingcheng-1-76/tree/master/qingchengcode/qingchengcode
全栈程序员站长
2021/05/19
9440
😊SpringBoot 整合 Elasticsearch (超详细).md
用户7630333
2023/12/07
3K0
😊SpringBoot 整合 Elasticsearch (超详细).md
Spring Data ElasticSearch 基本使用
Spring Data是一个用于简化数据库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务。 Spring Data可以极大的简化JPA的写法,可以在几乎不用写实现的情况下,实现对数据的访问和操作。除了CRUD外,还包括如分页、排序等一些常用的功能。
暴躁的程序猿
2022/03/24
1.4K0
Spring Data ElasticSearch 基本使用
Elasticsearch学习(九)搭建日志系统,在Java代码中获取日志信息
绝大多数项目在后台管理中都有日志管理。以前的日志信息是存储在MySQL中,日志随着项目运行时间会越来越多,一直存储在MySQL会导致查询降低。现在的日志信息通过ELK技术栈进行操作。存储在Elasticsearch中,可以更好的分析日志内容及更快查询效率。
一写代码就开心
2021/03/02
1.3K0
Elasticsearch学习(九)搭建日志系统,在Java代码中获取日志信息
8_搭建商城搜索微服务[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/152834.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/12
6740
8_搭建商城搜索微服务[通俗易懂]
完整教程:Springboot 2.2整合
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
程裕强
2019/11/12
1.1K0
ES-使用springData来操作es 原
1 Es 的配置文件 elasticsearch.yml http.cors.enabled: true http.cors.allow-origin: "*" network.host: 127.
用户5927264
2019/08/30
2K0
快速学习ES6-Spring Data Elasticsearch
而是学习Spring提供的套件:Spring Data Elasticsearch。
cwl_java
2020/02/11
1.8K0
Elasticsearch学习(六)手把手教你用Java操作Elaticsearch, 教你学会ElasticsearchTemplate的使用
使用Spring Data 下二级子项目Spring Data Elasticsearch进行操作。支持POJO方法操作Elasticsearch。相比Elasticsearch提供的API更加简单更加方便。
一写代码就开心
2021/03/02
1.9K0
Elasticsearch学习(六)手把手教你用Java操作Elaticsearch, 教你学会ElasticsearchTemplate的使用
【Elasticsearch】整合Spring Data Elasticsearch
官方文档:Java High Level REST Client | Java REST Client [6.8] | Elastic
陶然同学
2023/02/24
1.4K0
【Elasticsearch】整合Spring Data Elasticsearch
Spring和Elasticsearch全文搜索整合详解
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。
品茗IT
2019/09/12
2.5K0
快速学习ES6-索引库数据导入
昨天我们学习了Elasticsearch的基本应用。今天就学以致用,搭建搜索微服务,实现搜索功能。
cwl_java
2020/02/11
7470
Apache Maven 高级应用(Part A)
Maven是一个项目管理工具。依赖管理既Maven对项目中的JAR包的管理过程,传统工程我们将JAR包放在项目中,而Maven工程将JAR包放在仓库中,项目中只引用JAR包的坐标。
RiemannHypothesis
2022/09/26
7540
Apache Maven 高级应用(Part A)
SpringData集成Elasticsearch
Spring Data 是一个用于简化数据库、非关系型数据库、索引库访问,并支持云服务的 开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持 map-reduce 框架和云计 算数据服务。 Spring Data 可以极大的简化 JPA(Elasticsearch„)的写法,可以在几乎不用 写实现的情况下,实现对数据的访问和操作。除了 CRUD 外,还包括如分页、排序等一些 常用的功能。
鱼找水需要时间
2023/02/16
6250
SpringData集成Elasticsearch
ElasticSearch全文搜索引擎 -Spring Boot操作ES(SpringData概述、Spring Data Elasticsearch、基本操作、ElasticSearch操作文档)
Spring Data是spring提供的一套连接各种第三方数据源的框架集,它支持连接很多第三方数据源,例如:
鱼找水需要时间
2023/02/16
2.5K0
ElasticSearch全文搜索引擎 -Spring Boot操作ES(SpringData概述、Spring Data Elasticsearch、基本操作、ElasticSearch操作文档)
day73_淘淘商城项目_06_solr索引库搭建 + solr搜索功能实现 + 图片显示等问题解决_匠心笔记
  solr是java开发的。   solr的安装文件。   推荐在Linux环境下使用Solr,需要安装环境Linux。   需要安装jdk。参考链接:https://www.cnblogs.com/chenmingjun/p/9931593.html   需要安装tomcat。
黑泽君
2018/12/14
1.9K0
day73_淘淘商城项目_06_solr索引库搭建 + solr搜索功能实现 + 图片显示等问题解决_匠心笔记
SpringBoot3集成ElasticSearch
Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,适用于各种数据类型,数字、文本、地理位置、结构化数据、非结构化数据;
知了一笑
2023/09/01
1.3K0
SpringBoot3集成ElasticSearch
Spring Boot & ES 实战,值得参考!
Spring Boot 2.0.5默认的elasticsearch版本很低,这里我们用最新版本6.4.1
Java技术栈
2019/09/16
3.5K0
Spring Boot & ES 实战,值得参考!
springboot 2.2.x +ES 7.4.x 实现分词和高亮搜索
application.properties es默认没有密码,暂时未设定用户密码
smallmayi
2022/05/12
8440
springboot 2.2.x +ES 7.4.x 实现分词和高亮搜索
Spring Boot骚操作-多数据源Service层封装
https://github.com/realpdai/springboot-data-multidatasource-demo
JAVA葵花宝典
2020/03/10
1.3K0
Spring Boot骚操作-多数据源Service层封装
推荐阅读
相关推荐
javaweb-青橙项目-1-76
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档