2026/7/25 2:09:23

使用Docker镜像高效编译Apache Doris并解决虚拟机磁盘扩容问题

使用Docker镜像高效编译Apache Doris并解决虚拟机磁盘扩容问题 如果你正在寻找一种能快速搭建 Doris 编译环境、避免手动安装复杂依赖,并且希望编译产物能稳定保留的方法,那么 Apache Doris 官方提供的 Docker 编译镜像绝对是你的首选。这个由社区维护的镜像,预装了编译 Doris 所需的所有工具链(如 LDB Toolchain)、第三方库和 JDK,让你可以“开箱即用”,直接进入编译环节,极大地简化了从源码到二进制产物的过程。对于需要在本地开发、测试特定分支,或者在 CI/CD 流水线中集成 Doris 编译的开发者来说,这个方法能显著提升效率。本文将聚焦于如何使用 Docker 镜像进行 Doris 的离线编译部署,并针对一个常见痛点——虚拟机磁盘空间不足,提供完整的扩容解决方案。我们会从环境准备、镜像拉取、编译执行,一直讲到虚拟机磁盘扩容的实操步骤,确保你能在资源受限的环境下也能顺利完成整个流程。1. 核心能力速览在深入细节之前,我们先快速了解下这个方案的核心特性和要求。能力项说明项目类型Apache Doris 官方 Docker 编译环境核心功能提供预配置的完整编译环境,用于从源码编译 Doris环境要求本地需安装 Docker 环境镜像体积约 3.3 GB (以build-env-for-2.0为例)支持架构主要支持 x86_64;ARM64 需特殊处理JDK 版本镜像内同时包含 JDK 8 和 JDK 17,可按需切换编译产物输出至宿主机挂载的源码目录下的output/文件夹网络要求编译时需要容器能访问外网以下载依赖(建议使用--network=host)是否支持离线首次拉取镜像和编译时需要网络;可通过挂载本地.m2目录缓存依赖,实现部分离线复用适合场景本地开发编译、CI/CD 自动化构建、快速搭建统一编译环境2. 适用场景与使用边界谁适合使用?Doris 开发者:需要频繁编译不同分支进行功能开发或问题调试。运维或测试工程师:需要在特定环境(如内网、特定 Linux 发行版)下构建 Doris 安装包。CI/CD 流程维护者:希望在 Docker 容器中实现可复现、隔离的 Doris 构建流程。能解决什么问题?环境一致性:避免因本地环境差异(如 GCC 版本、库文件路径)导致的编译失败。依赖管理简化:无需手动安装和配置复杂的编译工具链(如 LDB Toolchain)及大量第三方库。环境清理便捷:编译完成后,直接删除容器即可,宿主机环境保持干净。编译产物持久化:通过目录挂载,编译生成的二进制文件保留在宿主机,不随容器销毁而丢失。不适合什么场景?存算分离模式编译:根据官方文档提示,目前 Docker 镜像方式暂不支持存算分离模式的编译部署。极度受限的无网络环境:虽然依赖可缓存,但初始镜像拉取和部分编译过程仍需网络。磁盘空间极其紧张:Docker 镜像本身约 3.3GB,编译过程还需要额外空间,需提前规划。3. 环境准备与前置条件在开始之前,请确保你的宿主机环境满足以下要求:操作系统:支持 Docker 的 Linux 发行版(如 CentOS, Ubuntu),或 macOS/Windows with WSL2。本文以 CentOS 为例。Docker 环境:已安装并启动 Docker 服务。如果尚未安装,在 CentOS 上可执行:sudo yum install -y docker sudo systemctl start docker s