官方文档:https://doris.apache.org/zh-CN/docs/summary/basic-summary
先使用以下命令查看部署doris的机器是否支持AVX2指令集
cat /proc/cpuinfo | grep avx2
# 有输出则表示本机支持AVX2
如果机器支持AVX2指令集,可以直接拉取镜像
$ docker pull apache/doris:版本号
跳到第四步继续执行
如果不支持AVX2,只能去官网下载no-avx2版本的包手动构建docker镜像进行部署。
本文以doris:1.2.2为例
下载地址
https://mirrors.tuna.tsinghua.edu.cn/apache/doris/1.2/1.2.2-rc01/
构建环境目录如下:
mkdir-p ./docker-build/fe/resource
将包拷贝至./docker-build/fe/resource目录下
# 选择基础镜像
FROM openjdk:8u342-jdk
# 设置环境变量
ENV JAVA_HOME="/usr/local/openjdk-8/" \
PATH="/opt/apache-doris/fe/bin:$PATH"
# 下载软件至镜像内,可根据需要替换
ADD ./resource/apache-doris-fe-1.2.2-bin-x86_64.tar.xz /opt/
# ADD可以将包解压至目标目录下
RUN mkdir /opt/apache-doris && \
cd /opt && \
mv apache-doris-fe-1.2.2-bin-x86_64 /opt/apache-doris/fe
COPY ./resource/init_fe.sh /opt/apache-doris/fe/bin
RUN chmod 755 /opt/apache-doris/fe/bin
ENTRYPOINT ["/opt/apache-doris/fe/bin/init_fe.sh"]
编写完成后命名为Dockerfile并保存至./docker-build/fe目录下
参考:https://github.com/apache/doris/tree/master/docker/runtime/fe/resource/init_fe.sh
无特殊要求可以直接复制
编写后命名为 init_fe.sh 并保存至 ./docker-build/fe/resouce 目录下
构建FE:
cd ./docker-build/fe
docker build . -t ${fe-tagName}
需要注意的是,${tagName} 需替换为你想要打包命名的 tag 名称,如:doris:1.2.2-fe
构建完成后如果没有报错,可以用docker images查看镜像是否创建成功
mkdir-p ./docker-build/be/resource
└── docker-build // 构建根目录
└── be // BE 构建目录
├── dockerfile // dockerfile 脚本
└── resource // 资源目录
├── init_be.sh // 启动及注册脚本
└── apache-doris-x.x.x-bin-x86_64/arm-be.tar.gz // 二进制程序包
~~~sh
# 选择基础镜像
FROM openjdk:8u342-jdk
# 设置环境变量
ENV JAVA_HOME="/usr/local/openjdk-8/" \
PATH="/opt/apache-doris/be/bin:$PATH"
# 下载软件至镜像内,可根据需要替换
ADD ./resource/apache-doris-be-1.2.2-bin-x86_64-noavx2.tar.xz /opt/
# ADD可以将包解压至目标目录下
RUN mkdir /opt/apache-doris && \
cd /opt && \
mv apache-doris-be-1.2.2-bin-x86_64-noavx2 /opt/apache-doris/be
COPY ./resource/init_be.sh /opt/apache-doris/fe/bin
RUN chmod 755 /opt/apache-doris/be/bin
ENTRYPOINT ["/opt/apache-doris/be/bin/init_fe.sh"]
编写后命名为 Dockerfile 并保存至 ./docker-build/be 目录下
这里我遇到了一个很离谱的问题,将init_be.sh复制到目标目录后,构建docker镜像的时候会报No such file的错误。
我的解决办法是,将apache-doris-be-1.2.2-bin-x86_64-noavx2.tar.xz先解压,将init_be.sh文件放到bin目录下后重新压缩成tar文件,再ADD到目标目录,成功解决
参考:https://github.com/apache/doris/blob/master/docker/runtime/be/resource/init_be.sh
无特殊要求可以直接复制
编写后命名为 init_be.sh 并保存至 ./docker-build/be/resouce 目录下
构建BE:
cd ./docker-build/be
docker build . -t ${be-tagName}
#首先需要在宿主机执行如下命令
sysctl -w vm.max_map_count=2000000
#Docker Run 命令
#1FE & 1BE命令模板
docker run -itd \
--name=fe \
--envFE_SERVERS="fe1:10.10.204.227:9010" \
--envFE_ID=1 \
-p8030:8030 \
-p9030:9030 \
-v /docker/doris/fe/doris-meta:/usr/share/apache-doris/fe/doris-meta \
-v /docker/doris/fe/conf:/usr/share/apache-doris/fe/conf \
-v /docker/doris/fe/log:/usr/share/apache-doris/fe/log \
doris:1.2.2-fe
docker run -itd \
--name=be \
--envFE_SERVERS="fe1:10.10.204.227:9010" \
--envBE_ADDR="10.10.204.227:9050" \
-p8040:8040 \
-v /docker/doris/be/storage:/opt/apache-doris/be/storage \
-v /docker/doris/be/conf:/opt/apache-doris/be/conf \
-v /docker/doris/be/log:/opt/apache-doris/be/log \
doris:1.2.2-be
我是将FE和BE部署在了同一节点
多FE/BE可以参考: https://github.com/apache/doris/blob/master/docker/runtime/docker-compose-demo/build-cluster/rum-command/3fe_3be.sh
查看FE/BE是否启动成功
访问fe_ip:8030
用户名root 没有密码
连接mysql
mysql -h FE_IP -P9030 -uroot
至此doris部署完毕。