1.1.1 使用 Docker 开发镜像编译(推荐)¶
本文介绍如何使用 Doris
官方提供的编译镜像来编译 Doris
,由于此镜像由官方维护,且会随编译依赖及时更新,所以推荐用户使用这种方式编译
Tip
目前还不支持存算分离模式编译部署
1 安装 Docker¶
比如在 CentOS
下,执行命令安装 Docker
Bash | |
---|---|
1 |
|
或参考 Docker
官方安装文档进行安装
2 下载 Doris 构建镜像¶
不同的 Doris
版本,需要下载不同的构建镜像。其中 apache/doris:build-env-ldb-toolchain-latest
用于编译最新主干版本代码,会随主干版本不断更新。
镜像版本 | Doris 版本 |
---|---|
apache/doris:build-env-for-2.0 | 2.0.x |
apache/doris:build-env-for-2.0-no-avx2 | 2.0.x |
apache/doris:build-env-ldb-toolchain-latest | master |
apache/doris:build-env-ldb-toolchain-no-avx2-latest | master |
下面就以编译 Doris 2.0
版本作为介绍,下载并检查 Docker
镜像
Bash | |
---|---|
1 2 3 4 5 6 7 |
|
注意事项:
-
针对不同的
Doris
版本,需要下载对应的镜像版本。镜像版本号与Doris
版本号统一,比如可以使用apache/doris:build-env-for-2.0
来编译2.0
版本。 -
apache/doris:build-env-ldb-toolchain-latest
用于编译最新主干版本代码,会随主干版本不断更新。可以查看docker/README.md
中的更新时间。 -
名称中带有
no-AVX2
字样的镜像中的第三方库,可以运行在不支持AVX2
指令的CPU
上。可以配合USE_AVX2=0
选项,编译Doris
。 -
编译镜像变更信息可参考
ChangeLog
。 -
最新版本的
apache/doris:build-env-ldb-toolchain-latest
镜像中同时包含JDK 8
和JDK 17
。2.1
(含)之前的版本,请使用JDK 8
。3.0
(含)之后的版本或master
分支,请使用JDK 17
。Bash 1 2 3 4 5 6 7
# 切换到 JDK 8 export JAVA_HOME=/usr/lib/jvm/java-1.8.0 export PATH=$JAVA_HOME/bin/:$PATH # 切换到 JDK 17 export JAVA_HOME=/usr/lib/jvm/jdk-17.0.2/ export PATH=$JAVA_HOME/bin/:$PATH
3 编译 Doris¶
3.1 下载 Doris 源码¶
登录到宿主机,通过 git clone
获取 Doris 2.0
分支上的最新代码。
Bash | |
---|---|
1 |
|
下载后,源代码路径,假设放到了 doris-branch-2.0
这个目录下。
3.2 运行构建镜像¶
Bash | |
---|---|
1 2 3 4 5 6 7 |
|
注意:
-
建议以挂载本地
Doris
源码目录的方式运行镜像,这样编译的产出二进制文件会存储在宿主机中,不会因为镜像退出而消失。 -
建议同时将镜像中
maven
的.m2
目录挂载到宿主机目录,以防止每次启动镜像编译时,重复下载maven
的依赖库。 -
运行镜像编译时需要下载其它文件,可以采用
host
模式启动镜像。host
模式不需要加-p
进行端口映射,和宿主机共享网络IP
和端口。 -
Docker run
部分参数说明如下:参数 注释 -v 给容器挂载存储卷,挂载到容器的某个目录 --name 指定容器名字,后续可以通过名字进行容器管理 --network 容器网络设置: bridge
使用docker daemon
指定的网桥,host
容器使用主机的网络,container:NAME_or_ID
使用其他容器的网路,共享IP
和PORT
等网络资源,none
容器使用自己的网络(类似--net=bridge
),但是不进行配置
3.3 执行构建¶
Bash | |
---|---|
1 2 3 4 5 6 7 8 |
|
Tip
如何查看机器是否支持 AVX2
?
Bash | |
---|---|
1 |
|
编译完成后,产出文件在 output/
目录中。
4 自行编译开发环境镜像¶
可以自己创建一个 Doris
开发环境镜像,具体可参阅 docker/README.md
文件。