当前位置: 首页 > news >正文

Doris Docker 完整部署指南

Doris Docker 完整部署指南

目前在网上没找到一个好用的doris 本地安装教程,参考官网的教程,写了一docker版本,基于mac版本的
在这里插入图片描述

一、创建 Dockerfile

1.1 先克隆 Doris 源码到本地

重要:必须先下载源码,因为 Dockerfile 需要使用源码中的构建环境

# 创建目录
mkdir -p ~/doris-docker/doris-src
cd ~/doris-docker/doris-src# 克隆 Doris 源码
git clone https://github.com/apache/doris.git
# 或使用国内镜像(如果 GitHub 较慢)
# git clone https://gitee.com/mirrors/doris.git# 等待克隆完成后,进入源码目录
cd doris

1.2 创建 Dockerfile 文件

在 Doris 源码的 docker 目录中已经有构建环境的 Dockerfile,我们需要在外部创建一个自定义的 Dockerfile:

# 创建构建目录
mkdir -p ~/doris-docker-build
cd ~/doris-docker-build
vim Dockerfile

将以下内容复制到 Dockerfile 中(使用本地源码中的 Dockerfile 作为基础):

方式:直接使用 Doris 官方构建镜像并自定义(更简单)

参考 官网 : Doris Docker 快速搭建开发环境
提供我使用的模版

FROM apache/doris:build-env-ldb-toolchain-latestUSER root
WORKDIR /root# 设置 root 密码
RUN echo '123456' | passwd root --stdin# 安装额外工具
RUN yum install -y vim net-tools man wget git mysql lsof bash-completion zsh sudo \&& yum clean all# 创建用户 ocsuser
RUN useradd -ms /bin/bash ocsuser \&& echo '0)y^B5vD' | passwd ocsuser --stdin \&& usermod -a -G wheel ocsuser \&& echo 'ocsuser ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers# 切换到普通用户
USER ocsuser
WORKDIR /home/ocsuser# 配置 Git
RUN git config --global color.ui true \&& git config --global user.email "piepis@163.com" \&& git config --global user.name "piepis"# 配置 Maven(使用国内镜像加速)# 安装并配置 zsh
USER root
RUN chsh -s /bin/zsh ocsuserUSER ocsuser
RUN wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O - | zsh || true \&& git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions || true \&& git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting || true \&& sed -i 's/plugins=(git)/plugins=(git zsh-autosuggestions zsh-syntax-highlighting)/' ~/.zshrc || trueWORKDIR /home/ocsuserCMD ["/bin/zsh"]

推荐使用方式,因为 Doris 官方的构建镜像已经包含了所有编译所需的依赖。

保存并退出(:wq

二、准备工作

2.1 创建其他宿主机目录结构

源码目录已经在第一步创建了,现在创建其他需要的目录:

# 创建 Maven 缓存和数据目录(源码目录已经在第一步创建)
mkdir -p ~/doris-docker/.m2            # Maven 依赖缓存
mkdir -p ~/doris-docker/fe-data        # FE 数据目录
mkdir -p ~/doris-docker/be-data        # BE 数据目录
mkdir -p ~/doris-docker/logs           # 日志目录

2.2 验证源码是否下载完成

# 检查源码目录
ls -la ~/doris-docker/doris-src/doris/
# 应该能看到 fe、be、docker 等目录# 查看 Doris 版本
cd ~/doris-docker/doris-src/doris
git branch

三、构建镜像

# 在 Dockerfile 所在目录执行
cd ~/doris-docker-build
docker build -t doris-dev:latest .

注意事项:

  • 首次构建可能需要较长时间(下载基础镜像和安装依赖)
  • 推荐使用方式的 Dockerfile(基于官方构建镜像),因为已包含所有编译依赖
  • 如果 GitHub 访问较慢,可以配置 Docker 代理或使用国内镜像源
  • 构建完成后可以使用 docker images 查看镜像

如果构建失败,可以尝试:

# 使用代理构建(如果有代理)
docker build --build-arg HTTP_PROXY=http://your-proxy:port \--build-arg HTTPS_PROXY=http://your-proxy:port \-t doris-dev:latest .# 或者跳过 oh-my-zsh 安装(手动安装)
# 修改 Dockerfile,在 zsh 安装命令后添加 || true

四、运行容器(推荐方式)

4.1 首次启动容器

docker run -dit \--name doris-dev \--restart=always \--network host \-v ~/doris-docker/doris-src/doris:/home/ocsuser/doris-src \-v ~/doris-docker/.m2:/home/ocsuser/.m2 \-v ~/doris-docker/fe-data:/home/ocsuser/fe-data \-v ~/doris-docker/be-data:/home/ocsuser/be-data \-v ~/doris-docker/logs:/home/ocsuser/logs \doris-dev:latest \/bin/zsh

重要说明:

  • 注意源码挂载路径是 ~/doris-docker/doris-src/doris(包含 doris 子目录)
  • 这样容器内的 /home/ocsuser/doris-src 就是 Doris 源码根目录

参数说明:

  • -dit: 后台运行并分配终端
  • --name doris-dev: 容器名称
  • --restart=always: 容器自动重启(包括 Docker 重启后)
  • --network host: 使用宿主机网络(无需端口映射)
  • -v: 挂载目录到容器

4.2 进入容器

docker exec -it doris-dev zsh

五、编译 Doris

5.1 首次编译(在容器内执行)

cd ~/doris-src# 编译 FE 和 BE(首次编译会下载依赖,耗时较长)
sh build.sh --clean# 或分别编译
# sh build.sh --fe --clean    # 只编译 FE
# sh build.sh --be --clean    # 只编译 BE

5.2 编译产物位置

# FE 编译产物
~/doris-src/output/fe/# BE 编译产物
~/doris-src/output/be/

六、配置自动启动脚本

6.1 创建启动脚本

在容器内创建启动脚本:

# 进入容器
docker exec -it doris-dev zsh# 创建 FE 启动脚本
cat > ~/start-fe.sh << 'EOF'
#!/bin/bash
FE_HOME=/home/ocsuser/doris-src/output/fe
if [ -d "$FE_HOME" ]; thenecho "Starting Doris FE..."cd $FE_HOME./bin/start_fe.sh --daemonecho "FE started"
elseecho "FE not found at $FE_HOME, please compile first"
fi
EOF# 创建 BE 启动脚本
cat > ~/start-be.sh << 'EOF'
#!/bin/bash
BE_HOME=/home/ocsuser/doris-src/output/be
if [ -d "$BE_HOME" ]; thenecho "Starting Doris BE..."cd $BE_HOME./bin/start_be.sh --daemonecho "BE started"
elseecho "BE not found at $BE_HOME, please compile first"
fi
EOF# 创建统一启动脚本
cat > ~/start-doris.sh << 'EOF'
#!/bin/bash
echo "=== Starting Doris Services ==="
bash ~/start-fe.sh
sleep 5
bash ~/start-be.sh
echo "=== Doris Services Started ==="
EOF# 赋予执行权限
chmod +x ~/start-fe.sh ~/start-be.sh ~/start-doris.sh

6.2 配置自动启动(添加到 .zshrc)

# 在容器内执行
cat >> ~/.zshrc << 'EOF'# Auto start Doris FE and BE
if [ -f ~/start-doris.sh ]; then~/start-doris.sh
fi
EOF# 使配置生效
source ~/.zshrc

七、配置 Doris

7.1 初次配置 FE

# 编辑 FE 配置文件
vim ~/doris-src/output/fe/conf/fe.conf# 关键配置项(根据需要调整):
# meta_dir = /home/ocsuser/fe-data/doris-meta
# sys_log_dir = /home/ocsuser/logs/fe
# priority_networks = 127.0.0.1/32  # 或你的实际网段

7.2 初次配置 BE

# 编辑 BE 配置文件
vim ~/doris-src/output/be/conf/be.conf# 关键配置项(根据需要调整):
# storage_root_path = /home/ocsuser/be-data/storage
# sys_log_dir = /home/ocsuser/logs/be
# priority_networks = 127.0.0.1/32  # 或你的实际网段

八、启动和管理

8.1 手动启动服务

# 方式1:使用启动脚本
~/start-doris.sh# 方式2:分别启动
~/start-fe.sh
~/start-be.sh

8.2 停止服务

# 停止 FE
~/doris-src/output/fe/bin/stop_fe.sh# 停止 BE
~/doris-src/output/be/bin/stop_be.sh

8.3 查看服务状态

# 查看进程
ps aux | grep doris# 查看日志
tail -f ~/logs/fe/fe.log
tail -f ~/logs/be/be.INFO

8.4 连接 Doris

# 使用 MySQL 客户端连接(默认端口 9030)
mysql -h 127.0.0.1 -P 9030 -u root# 添加 BE 节点(首次需要)
ALTER SYSTEM ADD BACKEND "127.0.0.1:9050";# 查看 BE 状态
SHOW BACKENDS\G

九、常用命令

# 进入容器
docker exec -it doris-dev zsh# 查看容器日志
docker logs doris-dev# 重启容器(会自动启动 FE/BE)
docker restart doris-dev# 停止容器
docker stop doris-dev# 启动容器
docker start doris-dev# 删除容器(保留数据)
docker rm -f doris-dev

十、重新编译

# 进入容器
docker exec -it doris-dev zsh# 停止服务
~/doris-src/output/fe/bin/stop_fe.sh
~/doris-src/output/be/bin/stop_be.sh# 清理并重新编译
cd ~/doris-src
sh build.sh --clean# 启动服务
~/start-doris.sh

十一、故障排查

11.1 FE 启动失败

# 查看 FE 日志
tail -f ~/logs/fe/fe.log
tail -f ~/logs/fe/fe.out# 检查端口占用
lsof -i:9030
lsof -i:8030

11.2 BE 启动失败

# 查看 BE 日志
tail -f ~/logs/be/be.INFO
tail -f ~/logs/be/be.out# 检查端口占用
lsof -i:9050
lsof -i:8040

11.3 容器重启后服务未自动启动

# 检查 .zshrc 配置
cat ~/.zshrc | grep start-doris# 手动启动
~/start-doris.sh

十二、端口说明

服务端口说明
FE8030HTTP 端口(Web UI)
FE9030MySQL 协议端口
FE9010RPC 端口
BE8040HTTP 端口
BE9050Heartbeat 端口
BE9060RPC 端口
BE8060Brpc 端口

由于使用 --network host,这些端口直接绑定在宿主机上。

十三、备份与恢复

# 备份(在宿主机执行)
tar -czf doris-backup-$(date +%Y%m%d).tar.gz ~/doris-docker/# 恢复(在宿主机执行)
tar -xzf doris-backup-20240101.tar.gz -C ~/

QA

ERROR: The JAVA version is 8, it must be JDK-17.

sh-4.2$ pwd
/home/ocsuser/doris-src
sh-4.2$ sh build.sh --fe --clean
Target system: Linux; Target arch: x86_64
Python 2.7.5
Check JAVA_HOME version
JAVA_HOME=/usr/lib/jvm/java-1.8.0. It does not point to JDK-17.
The 'JDK_17' environment variable is not set.
ERROR: The JAVA version is 8, it must be JDK-17.

现在请在容器中执行以下命令:

# 1. 切换到 root 用户
sudo su -# 2. 下载 OpenJDK 17(使用华为云镜像,国内速度快)
cd /tmp
wget https://mirrors.huaweicloud.com/openjdk/17.0.2/openjdk-17.0.2_linux-x64_bin.tar.gz# 3. 解压到 /usr/local
tar -xzf openjdk-17.0.2_linux-x64_bin.tar.gz -C /usr/local/
ln -s /usr/local/jdk-17.0.2 /usr/local/jdk-17# 4. 清理
rm -f openjdk-17.0.2_linux-x64_bin.tar.gz# 5. 退出 root
exit# 6. 配置环境变量
echo 'export JAVA_HOME=/usr/local/jdk-17' >> ~/.zshrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.zshrc
source ~/.zshrc# 7. 验证安装
java -version
echo $JAVA_HOME# 8. 开始编译
cd ~/doris-src
sh build.sh --fe --clean
sh build.sh --be --clean
http://www.dtcms.com/a/594127.html

相关文章:

  • C语言算法:排序算法入门
  • seo简单优化sem和seo都包括什么
  • 舞蹈培训机构网站建设上门做网站公司哪家好
  • Unity Tilemap小方块(瓦片)颜色的更改
  • 中国建设银行网站首页u盾登入网站建设小
  • Java 基本语法:从小白到大师的编程之路!
  • SPARQL 1.1 BNF浅析
  • Java基础——集合进阶用到的数据结构知识点4
  • 四、神经网络
  • 数据结构之红黑树
  • 上海 网站备案拍照推广公众号平台的公司
  • 自学网站有哪些深圳建企业网站
  • 课程网站开发合同英文网站有哪些
  • Android内核进阶之pcm硬件参数最小约束值snd_pcm_hw_param_first:用法实例(八十七)
  • Node-RED:输入节点全家桶:数据从哪里来?
  • AI 大模型训练 / 推理的 CPU/GPU 选型指南整理 (仅供参考)
  • 桂林网站优化公司wordpress换空间搬家
  • 青岛网站建设制作公司WordPress 网站成本
  • 现代数据库系统数据结构 B+Tree
  • 佛山专业网站营销企业官方网站管理制度
  • 竞价单页网站制作教程阿里巴巴国际站怎么找客户
  • Attention复杂度解析与改进方向
  • 化工网站建设推广南通做网站的
  • 寻找网站建设员网站开发要跑道吗
  • 集成式智能体开发流程提示词
  • 保定免费建站服务医院男性男科
  • 农业数据集目标检测分割分类数据集汇总介绍
  • 做网站公司在深圳培训学校机构有哪些
  • 织梦 两个网站网站该怎么找到
  • vscode实现ssh远程连接