Apache Doris 作为一款高性能、实时分析型数据库,凭借其极速查询、简单部署的优势,成为大数据分析场景的热门选择。但传统部署方式需要配置环境、依赖,步骤繁琐,对新手不太友好。今天就给大家分享一种更高效的部署方式——使用 Docker Compose 一键搭建 Doris 单机测试环境,无需复杂配置,几分钟就能完成部署,适合开发、测试和新手入门学习。
先说明一点:本文部署的是 Doris 单机版(1个 FE + 1个 BE),仅适用于开发、测试环境,生产环境建议使用裸机、虚拟机或 K8s 部署,保障数据可靠性和性能稳定性。
一、前置准备(必看!)
部署前需确保宿主机已安装好 Docker 和 Docker Compose,且版本满足要求,同时做好环境参数配置,避免后续启动失败。
1. 环境版本要求
- Docker:v20.0 及以上
- Docker Compose:v2.0 及以上
- 操作系统:建议使用 Ubuntu、CentOS 等主流 Linux 系统(Windows、Mac 可用于测试,但体验不如 Linux)
- 内存:至少 4GB(推荐 8GB 及以上,避免因内存不足导致容器启动失败)
2. 检查 Docker 与 Docker Compose 是否安装
打开终端,执行以下命令,若能正常输出版本号,说明已安装成功;若未安装,需先参考官方文档完成安装。
# 检查 Docker 版本
docker --version
# 检查 Docker Compose 版本
docker-compose --version
3. 配置宿主机环境参数
Doris 运行需要调整宿主机的虚拟内存和文件描述符限制,否则可能出现 BE 启动失败等问题,执行以下命令完成配置(临时生效,重启宿主机后需重新执行,若需永久生效可参考文末补充说明):
# 调整虚拟内存(关键!)
sudo sysctl -w vm.max_map_count=2000000
# 关闭 swap 分区(可选,提升性能)
swapoff -a
# 调整文件描述符限制
ulimit -n 60000
二、开始部署:Docker Compose 一键启动 Doris
整个部署过程分为 3 步:创建部署目录 → 编写 docker-compose.yml 文件 → 启动服务,全程复制命令即可完成,非常简单。
1. 创建部署目录
创建一个专门的 Doris 部署目录,用于存放配置文件、数据和日志,方便后续管理和维护:
# 创建主目录
mkdir -p ~/doris-deploy
# 进入目录
cd ~/doris-deploy
# 创建 FE、BE 数据和日志目录(实现数据持久化,避免容器删除后数据丢失)
sudo mkdir -p /opt/doris/fe/{doris-meta,log}
sudo mkdir -p /opt/doris/be/{storage,log}
# 赋予目录读写权限(避免容器写入数据失败)
sudo chown -R $(whoami):$(whoami) /opt/doris/
2. 编写 docker-compose.yml 配置文件
在 doris-deploy 目录下,创建 docker-compose.yml 文件,复制以下内容粘贴(建议使用 Doris 3.1.4 版本,稳定性较高,适配 Docker Compose 部署):
version: '3.8'
services:
# Doris FE(Frontend,前端节点,负责元数据管理、SQL 解析)
doris-fe:
image: apache/doris:fe-3.1.4
container_name: doris-fe
hostname: doris-fe
privileged: true
environment:
- FE_SERVERS=fe1:172.18.0.10:9010 # FE 节点信息,格式:节点名:IP:RPC端口
- FE_ID=1 # FE 节点 ID,单机版固定为 1
- TZ=Asia/Shanghai # 时区配置,避免时间错乱
volumes:
- /opt/doris/fe/doris-meta:/opt/apache-doris/fe/doris-meta # 挂载 FE 元数据目录
- /opt/doris/fe/log:/opt/apache-doris/fe/log # 挂载 FE 日志目录
ports:
- "8030:8030" # FE Web UI 端口(用于管理)
- "9030:9030" # MySQL 协议端口(用于连接 Doris 执行 SQL)
- "9010:9010" # FE RPC 端口(用于与 BE 通信)
networks:
doris-net:
ipv4_address: 172.18.0.10 # 固定 FE IP,避免通信异常
restart: always # 容器异常时自动重启
# Doris BE(Backend,后端节点,负责数据存储和计算)
doris-be:
image: apache/doris:be-3.1.4
container_name: doris-be
hostname: doris-be
privileged: true
environment:
- FE_SERVERS=fe1:172.18.0.10:9010 # 关联 FE 节点,与上方 FE 配置一致
- BE_ADDR=172.18.0.11:9050 # BE 节点地址,格式:IP:BRPC端口
- TZ=Asia/Shanghai
volumes:
- /opt/doris/be/storage:/opt/apache-doris/be/storage # 挂载 BE 数据存储目录
- /opt/doris/be/log:/opt/apache-doris/be/log # 挂载 BE 日志目录
ports:
- "8040:8040" # BE Web UI 端口
- "9050:9050" # BE BRPC 端口(与 FE 通信)
- "8060:8060" # BE 心跳端口
depends_on:
- doris-fe # 确保 FE 先启动,再启动 BE
networks:
doris-net:
ipv4_address: 172.18.0.11 # 固定 BE IP
restart: always
# 自定义 Docker 网络(桥接模式,避免端口冲突和通信问题)
networks:
doris-net:
driver: bridge
ipam:
config:
- subnet: 172.18.0.0/16 # 子网,与 FE、BE IP 匹配
3. 启动 Doris 服务
在 doris-deploy 目录下,执行以下命令,Docker Compose 会自动拉取 Doris 镜像、创建容器并启动服务:
docker-compose up -d
执行命令后,会看到“Creating network doris-net”“Pulling doris-fe”“Starting doris-fe”等提示,耐心等待即可(镜像拉取速度取决于网络,大概 5-10 分钟)。
查看容器启动状态,确认 FE 和 BE 都处于运行中:
docker-compose ps
若 STATUS 列显示“Up”,说明容器启动成功;若显示“Exited”,需查看日志排查问题(下文有排查方法)。
三、验证部署:确认 Doris 正常运行
部署完成后,我们通过两种方式验证 Doris 是否正常工作:Web UI 访问 + MySQL 客户端连接。
1. 访问 FE Web UI
打开浏览器,输入地址:http://宿主机IP:8030(比如宿主机 IP 是 192.168.1.100,就输入 http://192.168.1.100:8030)。
默认无需登录,直接进入管理界面,可看到 FE 节点状态为“Alive”,说明 FE 运行正常。
2. 使用 MySQL 客户端连接 Doris
Doris 支持 MySQL 协议,可直接使用 MySQL 客户端(如 Navicat、MySQL 命令行)连接,默认无密码。
# 命令行连接(需宿主机安装 MySQL 客户端)
mysql -h 127.0.0.1 -P 9030 -uroot
连接成功后,执行以下 SQL 命令,测试 Doris 功能是否正常(创建数据库、表、插入数据、查询数据):
-- 创建测试数据库
CREATE DATABASE test_db;
-- 切换到测试数据库
USE test_db;
-- 创建测试表(Doris 自定义 OLAP 引擎)
CREATE TABLE test_table (
id INT,
name VARCHAR(50),
create_time DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=OLAP
DISTRIBUTED BY HASH(id) BUCKETS 10 -- 按 id 哈希分区,10 个分桶
PROPERTIES (
"replication_num" = "1" -- 单机版副本数为 1,生产环境建议 3
);
-- 插入测试数据
INSERT INTO test_table VALUES (1, 'Doris', NOW()), (2, 'Docker', NOW());
-- 查询数据
SELECT * FROM test_table;
若能正常执行以上 SQL,且查询到插入的数据,说明 Doris 部署成功,可正常使用。
四、常用操作:停止、重启、查看日志
后续使用过程中,常用的操作命令整理如下,直接复制执行即可:
# 停止 Doris 服务(不删除容器和数据)
docker-compose down
# 启动 Doris 服务(已创建容器时使用)
docker-compose up -d
# 重启 Doris 服务
docker-compose restart
# 查看 FE 日志(排查 FE 启动失败问题)
docker logs -f doris-fe
# 查看 BE 日志(排查 BE 启动失败问题)
docker logs -f doris-be
# 进入 FE 容器内部
docker exec -it doris-fe /bin/bash
# 进入 BE 容器内部
docker exec -it doris-be /bin/bash
五、常见问题排查(新手必看)
部署过程中,可能会遇到一些小问题,这里整理了最常见的 3 种情况及解决方法:
1. BE 容器启动后立即退出
原因:大概率是宿主机虚拟内存未配置(vm.max_map_count 不足),或目录权限不足。
解决方法:重新执行前置准备中的环境参数配置命令,或赋予目录权限:
sudo chmod -R 777 /opt/doris/
2. 连接 MySQL 客户端失败
原因:FE 容器未正常启动,或端口被占用,或宿主机防火墙拦截 9030 端口。
解决方法:
- 查看 FE 容器状态:
docker ps | grep doris-fe,若未运行,重启 FE 容器。 - 检查 9030 端口是否被占用:
netstat -tuln | grep 9030,若被占用,修改 docker-compose.yml 中 FE 的端口映射(如改为 9031:9030)。 - 关闭宿主机防火墙(测试环境):
sudo systemctl stop firewalld。
3. BE 节点未注册到 FE
原因:FE 与 BE 不在同一个 Docker 网络,或 FE_SERVERS 配置错误。
解决方法:检查 docker-compose.yml 中 networks 配置,确保 FE 和 BE 都在 doris-net 网络中,且 FE_SERVERS 中的 IP 与 FE 的 ipv4_address 一致。
六、补充说明
- 数据持久化:本文通过挂载 /opt/doris 目录实现数据持久化,即使删除容器,数据也不会丢失;若无需持久化,可删除 volumes 相关配置(不推荐)。
- 版本选择:本文使用 Doris 3.1.4 版本,若需使用其他版本,可修改 docker-compose.yml 中的镜像标签(如 apache/doris:fe-4.0.2、apache/doris:be-4.0.2)。
- 生产环境建议:Docker Compose 部署仅适用于测试和开发,生产环境需部署多节点集群,配置数据备份,避免单点故障和数据丢失。
- 永久配置环境参数:若需让 vm.max_map_count 永久生效,编辑 /etc/sysctl.conf 文件,添加
vm.max_map_count=2000000,然后执行sysctl -p生效。
总结
相比传统部署方式,使用 Docker Compose 部署 Doris 无需手动配置依赖、环境变量,只需编写一份配置文件,一键即可启动整个服务,极大简化了部署流程,非常适合新手入门和快速测试。
按照本文步骤操作,几分钟就能搭建好 Doris 测试环境,后续可基于此环境学习 Doris 的 SQL 操作、数据导入、查询优化等功能。如果遇到其他问题,欢迎在评论区留言交流~