☰
Docker 部署 Dolibarr:轻松搭建开源 ERP/CRM 平台
2026/10/7 15:17:17 网站建设 项目流程

本文基于 dolibarr/dolibarr:22.0.5,以22.0.5版本实测,测试平台Ubuntu 24.04Linux。

小公司开报价单还在 Word 里改抬头,客户电话散在销售微信与旧 Excel;仓库盘点一张纸,财务月底再手工对一遍发票号。换人交接时说不清「哪份才是最终版」,催款也要对着聊天记录翻。业务体量不大,却已经需要联系人、报价、订单、库存和简单财务在同一处。

把整套系统塞进公有云 SaaS,客户资料与发票附件会出域;自己从源码装 PHP、配 Apache、再手搓 MySQL,对只要先有一个内网网址的人成本太高。机房或家里已经有一台跑 Docker 的 Ubuntu,缺的是:镜像能拉下来、数据库和应用一起起来、浏览器打开就能建公司与客户。

Dolibarr(官网、GitHub · dolibarr/dolibarr、镜像页)是开源 ERP / CRM:客户与供应商、报价与发票、库存、费用报销、休假等能力按模块开关。官方镜像dolibarr/dolibarr只带 Web(PHP + Apache),不内置数据库,需要单独准备 MariaDB 或 MySQL。本文使用dolibarr/dolibarr:22.0.5版本实测:Compose 拉起 Web 与 MariaDB 后,安装程序会自动创建数据库和管理员,附件与外部模块写在本机目录。

跑通之后,可以在浏览器里完善公司资料、按需打开模块,再建客户、开报价,或先走费用报销 / 休假这类人事流程——业务数据都在自己的盘上。


一、环境要求

项目建议
系统Linux,建议Ubuntu 24.04;macOS 目录用~/docker/dolibarr
DockerEngine +Compose V2
架构linux/amd64、linux/arm64(22.0.5均有)
内存建议 ≥2 GB空闲(Web + MariaDB)
磁盘应用 DISK1.33 GB/ CONTENT319 MB;MariaDB DISK455 MB/ CONTENT108 MB;业务数据另计
端口宿主机8088→ 容器80
工作目录/www/wwwroot/dolibarr
docker--versiondockercompose version

Linux 未装 Docker 可使用轩辕镜像一键安装脚本:

bash<(wget-qO- https://get.xuanyuan.cloud/docker.sh)

备用地址:

bash<(wget-qO- https://get.xuanyuan.me/docker.sh)

更多见轩辕镜像使用手册。


二、拉取镜像

2.1 标签怎么选

标签说明本文是否采用
22.0.522.x 较新的具体稳定版;amd64 / arm64采用
22.0.5-php8.2与22.0.5同源,标明 PHP 8.2可等价选用
22.0.4及更早旧补丁仅回退时用
develop开发线勿写入生产命令
latest浮动标签勿写入文中命令

完整列表见标签页。

升级应用时,只修改 Compose 里的 Dolibarr 镜像标签。

保留mariadb、documents、custom三个目录。

install.lock的处理见下文 FAQ 「升级大版本怎么做」。

2.2 用轩辕镜像加速拉取

dockerpull docker.xuanyuan.run/dolibarr/dolibarr:22.0.5dockerpull docker.xuanyuan.run/library/mariadb:11.4.13

Ubuntu 24.04 实测:

22.0.5: Pulling from dolibarr/dolibarr ... Digest: sha256:a9f033f7a37a8270d6190c477cb0510fbe3e7da77384715e7773856894cd13ec Status: Downloaded newer image for docker.xuanyuan.run/dolibarr/dolibarr:22.0.5 docker.xuanyuan.run/dolibarr/dolibarr:22.0.5
11.4.13: Pulling from library/mariadb ... Digest: sha256:70cc072b29b4a89ae07abb2d4da2c64678a7f2dfe092751bb51c87d67dc1338b Status: Downloaded newer image for docker.xuanyuan.run/library/mariadb:11.4.13 docker.xuanyuan.run/library/mariadb:11.4.13
IMAGE DISK USAGE CONTENT SIZE docker.xuanyuan.run/dolibarr/dolibarr:22.0.5 1.33GB 319MB docker.xuanyuan.run/library/mariadb:11.4.13 455MB 108MB

三、Docker Compose 部署(主路径)

按这个顺序做:

  1. 建立目录。
  2. 写入compose.yaml。
  3. 执行docker compose up -d。
  4. 等待自动安装完成。
  5. 在浏览器登录。

开始之前确认:

  • 数据目录使用/www/wwwroot/dolibarr。
  • 宿主机端口使用8088,容器端口是80。本机80上若已有面板或 Nginx,使用 8088 可以避开冲突。
  • 应用镜像使用dolibarr/dolibarr:22.0.5。数据库镜像使用 MariaDB11.4.13。

3.1 准备目录

在 Linux 上使用/www/wwwroot/dolibarr。

在 macOS 上,把同一路径换成~/docker/dolibarr。

chown的数字改成id -u和id -g的结果。

sudomkdir-p/www/wwwroot/dolibarr/{mariadb,documents,custom}sudochown-R1000:1000 /www/wwwroot/dolibarr/documents /www/wwwroot/dolibarr/customcd/www/wwwroot/dolibarr
宿主机目录容器路径用途
./mariadb/var/lib/mysql数据库
./documents/var/www/documents附件与install.lock
./custom/var/www/html/custom外部模块

3.2 写入 compose.yaml

写入文件之前,把DOLI_URL_ROOT改成你的访问地址,地址里要带端口。下文局域网示例是http://192.168.1.35:8088。

cd/www/wwwroot/dolibarrcat>compose.yaml<<'EOF' services: mariadb: image: docker.xuanyuan.run/library/mariadb:11.4.13 container_name: dolibarr-mariadb restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: change-me-root-pass MYSQL_DATABASE: dolidb MYSQL_USER: dolidbuser MYSQL_PASSWORD: change-me-db-pass volumes: - ./mariadb:/var/lib/mysql healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] interval: 10s timeout: 5s retries: 10 web: image: docker.xuanyuan.run/dolibarr/dolibarr:22.0.5 container_name: dolibarr-web restart: unless-stopped depends_on: mariadb: condition: service_healthy environment: DOLI_INSTALL_AUTO: "1" DOLI_INIT_DEMO: "0" DOLI_PROD: "1" DOLI_DB_HOST: mariadb DOLI_DB_NAME: dolidb DOLI_DB_USER: dolidbuser DOLI_DB_PASSWORD: change-me-db-pass DOLI_URL_ROOT: "http://192.168.1.35:8088" DOLI_ADMIN_LOGIN: admin DOLI_ADMIN_PASSWORD: change-me-admin-pass DOLI_COMPANY_NAME: "MyCompany" DOLI_COMPANY_COUNTRYCODE: "CN" DOLI_CRON: "0" WWW_USER_ID: "1000" WWW_GROUP_ID: "1000" PHP_INI_DATE_TIMEZONE: "Asia/Shanghai" PHP_INI_MEMORY_LIMIT: "256M" ports: - "8088:80" volumes: - ./documents:/var/www/documents - ./custom:/var/www/html/custom EOF

要点:

  • DOLI_DB_PASSWORD必须与MYSQL_PASSWORD相同。
  • 首次安装时,安装程序使用DOLI_ADMIN_LOGIN和DOLI_ADMIN_PASSWORD创建管理员。
  • 上线之前,把管理员密码改成强密码。
  • 登录之后,再在页面里修改一次管理员密码。
  • 正式环境把DOLI_INIT_DEMO保持为0。
  • 需要演示数据时,才把DOLI_INIT_DEMO设为1。安装程序会灌入演示数据。
  • 需要定时任务时,把DOLI_CRON设为1。
  • 启用定时任务时,写入DOLI_CRON_KEY。

3.3 启动并查看状态

在/www/wwwroot/dolibarr按顺序执行下面的命令。

cd/www/wwwroot/dolibarrdockercompose up-ddockercomposepsdockercompose logs-fweb
[+] up 3/3 ✔ Network dolibarr_default Created ✔ Container dolibarr-mariadb Healthy ✔ Container dolibarr-web Started
NAME IMAGE STATUS PORTS dolibarr-mariadb docker.xuanyuan.run/library/mariadb:11.4.13 Up … (healthy) 3306/tcp dolibarr-web docker.xuanyuan.run/dolibarr/dolibarr:22.0.5 Up … 0.0.0.0:8088->80/tcp

MariaDB 约46 s变为healthy之后,Web 容器才会启动。

logs -f web摘录(中间建表日志已省略):

docker-run.sh started Current Version of files is : 22.0.5 DOLI_INSTALL_AUTO is on, so we check to initialize or upgrade mariadb database No table found, we launch initializeDatabase Importing table from llx_accounting_account.sql ... ... Create SuperAdmin account ... Activating module User... OK Configuring for country : 9:CN:China Database Version is : 22.0.5 Files Version are : 22.0.5 Schema update is not required ... Enjoy ! *** You can connect to the running Dolibarr web application with: http://127.0.0.1:port Apache/2.4.68 (Debian) configured -- resuming normal operations

首次启动会导入大量llx_*.sql,可能持续数分钟。

日志出现就绪句之后,再打开浏览器。

日志出现You can connect to the running Dolibarr web application,并且 Apache 已就绪之后,按Ctrl+C停止跟随日志。

mkdir … conf: File exists和AH00558可以忽略。

说明见下文 FAQ。

在宿主机检查首页响应:

curl-sIhttp://127.0.0.1:8088/|head-n5
HTTP/1.1 200 OK Date: Thu, 24 Sep 2026 07:15:53 GMT Server: Apache Set-Cookie: DOLSESSID_…=…; path=/; HttpOnly; SameSite=Lax Expires: Thu, 19 Nov 1981 08:52:00 GMT

四、浏览器初始化

打开页面前,把示例地址中的 IP 换成你的 IP 或域名。

管理员用户名是admin。

密码使用 Compose 中的DOLI_ADMIN_PASSWORD。

本文示例值是change-me-admin-pass。

在第 9 步修改管理员密码之前,示例密码仍然可以登录。

  1. 打开http://192.168.1.35:8088。

  2. 使用用户名admin登录。

自动安装已经启用用户模块。

其他模块启用之前,侧栏不会出现对应菜单。

  1. 打开「设置」。

    页面会提示完善「公司 / 组织」,并启用模块。

  2. 打开「公司 / 组织」。

  3. 核对公司名和国家。本文实测国家为China / CN。

    主币种仍是欧元时,把主币种改为人民币并保存。

  4. 打开「模块 / 应用」。

  5. 按需要启用模块,例如「第三方」(客户)、「商业提案 / 发票」、「产品与库存」,或人事中的「费用报销」和「休假」。

  6. 打开「主题 → 语言和呈现」。

    浏览器已经是中文时,语言保持「自动检测」。

  7. 修改管理员密码。

  8. 核对浏览器地址栏与DOLI_URL_ROOT是否一致。

地址不一致时,生成的链接会错。


五、功能演示

「我的看板」汇总逾期、报销、休假等卡片。新装后的账号多为 SuperAdmin,业务计数为 0。

启用人事相关模块之后,顶栏会出现「人事管理」。

新装时,费用报销和休假列表为空。这是正常现象。

可以从「+」新建一张单据,确认页面能打开。

销售和库存可以按下面的顺序做:

  1. 启用「第三方」等模块。
  2. 新建客户或供应商。
  3. 创建报价或订单。
  4. 开发票。

「产品与库存」模块启用之后,再维护产品和出入库。

合同和 PDF 等附件写在documents卷中。

备份时,把documents、mariadb、custom一起打包。

更细的模块说明见 Dolibarr Wiki。


六、备选:docker run

这一节只用于临时试玩。

第三节的 Compose 已经在运行时,先在/www/wwwroot/dolibarr执行docker compose down。

不先停止时,容器名会冲突。

先启动 MariaDB。

数据库就绪之后(约数十秒),再启动 Web 容器。

sudomkdir-p/www/wwwroot/dolibarr/{mariadb,documents,custom}sudochown-R1000:1000 /www/wwwroot/dolibarr/documents /www/wwwroot/dolibarr/customdockernetwork create dolibarr-netdockerrun-d--namedolibarr-mariadb--networkdolibarr-net--restartunless-stopped-eMYSQL_ROOT_PASSWORD=change-me-root-pass-eMYSQL_DATABASE=dolidb-eMYSQL_USER=dolidbuser-eMYSQL_PASSWORD=change-me-db-pass-v/www/wwwroot/dolibarr/mariadb:/var/lib/mysql docker.xuanyuan.run/library/mariadb:11.4.13# 等数据库就绪后再启动 Web(约数十秒)dockerrun-d--namedolibarr-web--networkdolibarr-net--restartunless-stopped-p8088:80-eDOLI_INSTALL_AUTO=1-eDOLI_DB_HOST=dolibarr-mariadb-eDOLI_DB_NAME=dolidb-eDOLI_DB_USER=dolidbuser-eDOLI_DB_PASSWORD=change-me-db-pass-eDOLI_URL_ROOT=http://192.168.1.35:8088-eDOLI_ADMIN_LOGIN=admin-eDOLI_ADMIN_PASSWORD=change-me-admin-pass-eDOLI_COMPANY_NAME=MyCompany-eDOLI_COMPANY_COUNTRYCODE=CN-eWWW_USER_ID=1000-eWWW_GROUP_ID=1000-v/www/wwwroot/dolibarr/documents:/var/www/documents-v/www/wwwroot/dolibarr/custom:/var/www/html/custom docker.xuanyuan.run/dolibarr/dolibarr:22.0.5
dockerps--filtername=dolibarrdockerlogs--tail100dolibarr-web

七、常见问题

为什么不用latest?
latest在拉取时会换成当时的新镜像,界面和迁移步骤可能与本文不一致。

本文命令使用22.0.5。

升级之前,先备份mariadb、documents、custom。

然后再修改应用镜像标签。

为什么宿主机是 8088?
容器内监听80。

宿主机80经常被 Nginx 或宝塔占用。

宿主机80空闲时,可以把映射改成"80:80"。

改端口之后,把DOLI_URL_ROOT改成同一个地址。

和tuxgasy/dolibarr有什么区别?
社区镜像曾常用tuxgasy/dolibarr。

本文使用官方镜像dolibarr/dolibarr(见 dolibarr-docker)。

不要让两套镜像共用同一份documents或数据库目录。

和 Odoo / ERPNext 怎么选?
Dolibarr 更轻,模块可以逐个打开,适合中小团队先完成销售和库存。

Odoo 和 ERPNext 的功能通常更多,学习和运维成本也更高。

按团队规模选择。

不要把 Odoo 或 ERPNext 和本文的 Compose 部署混在一起。

国家选了 China,主币种仍是欧元?
自动安装会写入国家代码。

主币种仍可能保持默认的欧元。

打开「公司 / 组织」。

把主币种改为人民币或你需要的币种,并保存。

页面空白或安装很久?
现象是页面空白,或首次安装长时间没有完成。

先查看docker compose logs web和docker compose logs mariadb。

数据库未就绪、DOLI_DB_PASSWORD与MYSQL_PASSWORD不一致、documents目录权限不对,都会让安装停住。

首次启动会导入数百个 SQL 文件,可能要数分钟。

日志出现就绪句,并且 Apache 已启动之后,再打开页面。

日志里mkdir: … conf: File exists?
安装脚本会尝试创建已经存在的conf目录。

这条日志可以忽略。

日志里AH00558/ ServerName?
这是 Apache 没有设置全局ServerName时的提示。

这条日志可以忽略。

要去掉这条提示时,按上游说明挂载servername.conf。

升级大版本怎么做?
升级前先选定迁移方式。

保持DOLI_INSTALL_AUTO=1时,安装程序会自动迁移数据库。

也可以打开/install,使用网页向导升级。

  1. 备份mariadb、documents、custom。
  2. 删除documents/install.lock。
  3. 修改 Compose 中的应用镜像标签。
  4. 执行docker compose pull && docker compose up -d。

如何启用演示数据?
只在首次安装之前把DOLI_INIT_DEMO设为1。

数据库已经创建之后,再改这个变量,不会补进演示数据。

可以用 PostgreSQL 吗?
本文主路径使用 MariaDB。

若改用 PostgreSQL,官方要求首次安装打开网页/install。

install.lock需要自行维护。

把DOLI_DB_TYPE设为pgsql。

再把数据库连接改到 PostgreSQL。

密码能否用 Docker Secrets?
部分变量支持_FILE后缀,例如DOLI_DB_PASSWORD_FILE。

写法见上游 with-secrets。


八、命令速查

# 拉取dockerpull docker.xuanyuan.run/dolibarr/dolibarr:22.0.5dockerpull docker.xuanyuan.run/library/mariadb:11.4.13# Composecd/www/wwwroot/dolibarrdockercompose up-ddockercomposepsdockercompose logs-fwebdockercompose down# 探测curl-sIhttp://127.0.0.1:8088/|head-n5

九、延伸阅读

资源链接
dolibarr/dolibarr 镜像页https://xuanyuan.cloud/r/dolibarr/dolibarr
标签列表https://xuanyuan.cloud/r/dolibarr/dolibarr/tags
GitHub · Dolibarr/dolibarr-dockerhttps://github.com/Dolibarr/dolibarr-docker
GitHub · dolibarr/dolibarrhttps://github.com/dolibarr/dolibarr
Docker Hub · dolibarr/dolibarrhttps://hub.docker.com/r/dolibarr/dolibarr
Dolibarr 官网https://www.dolibarr.org/
Dolibarr Wikihttps://wiki.dolibarr.org/
轩辕镜像使用手册https://xuanyuan.cloud/usage

阅读原文

  • 轩辕镜像官方博客:https://xuanyuan.cloud/blog/dolibarr-docker-deploy

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询