StarRocks Artifacts 镜像构建与发布指南:基于 Busybox 的 FE/BE 构件载体

发布时间:2026/9/15 15:47:50

StarRocks Artifacts 镜像构建与发布指南:基于 Busybox 的 FE/BE 构件载体 StarRocks Artifacts 镜像构建与发布指南基于 Busybox 的 FE/BE 构件载体【免费下载链接】starrocksThe worlds fastest open query engine for sub-second analytics both on and off the data lakehouse. With the flexibility to support nearly any scenario, StarRocks provides best-in-class performance for multi-dimensional analytics, real-time analytics, and ad-hoc queries. A Linux Foundation project.项目地址: https://gitcode.com/GitHub_Trending/st/starrocks本指南以仓库 docker/dockerfiles/artifacts/README.md 为骨架完整讲解 StarRocks Artifacts 镜像的设计动机、构建命令与发布流程并结合 artifact.Dockerfile 及下游 fe/be/allin1 镜像的源码实现说明它如何在多阶段 Docker 构建流水线中充当构件搬运工最终支撑 Kubernetes 各类运行时镜像的产出。读完本文你将掌握为 Ubuntu 与 CentOS 7 发行版构建并推送 StarRocks Artifacts 镜像的完整命令并理解它与 dev-env 镜像、运行时镜像之间的调用关系。Artifacts 镜像是什么一段 1MB 的构件快递StarRocks 的容器化构建采用封闭式hermetic多阶段 Docker 构建环境见 docker/dockerfiles/README.md。在这个流水线中Artifacts 镜像承担的角色非常特殊它以Busybox为基础镜像。Busybox 镜像体积仅约 1MB不含任何多余的包管理器与运行库构建阶段fe-builder / be-builder / downloader在功能完整的 dev-env 镜像中完成 FE、BE 及 broker 的编译产物产出最终阶段把三类产物统一拷贝进 Busybox 基础镜像得到一份只装产物、不带编译环境的精简镜像这份 Artifacts 镜像随后作为载体把构件传递到 Docker 构建的下一个阶段用于打包成各种类型的 Kubernetes 部署运行时镜像FE 镜像、BE/CN 镜像、All-in-One 镜像等。也就是说Artifacts 镜像本身不用于直接运行 StarRocks而是编译产物在流水线各阶段之间的传递介质。由于它不携带工具链和运行时依赖体积被压缩到极致搬运成本几乎可以忽略。构建前的前置知识如何选择正确的 dev-env 基础镜像构建 Artifacts 镜像前必须先用合适的 dev-env 镜像编译 FE/BE 源码。dev-env 镜像的命名与选择遵循如下规则如果构件来自branch-x分支、面向 linux 发行版distro则应使用对应的starrocks/dev-env-${distro}:${branch}-latest。例如面向Ubuntu发行版、基于branch-3.0分支构建应使用starrocks/dev-env-ubuntu:branch-3.0-latest面向Ubuntu发行版、基于main分支构建应使用starrocks/dev-env-ubuntu:main-latest面向CentOS 7发行版则对应starrocks/dev-env-centos7:main-latest。dev-env 镜像本身由 dev-env/dev-env.Dockerfile 构建其中预装全部开发工具、预编译的 StarRocks thirdparty 依赖以及 Maven 依赖缓存并以distro构建参数区分 Ubuntu / CentOS 7 / Rocky 9 三个发行版见 dev-env/README.md。Artifacts 镜像的构建命令通过--build-arg builder...把这一选择注入到artifact.Dockerfile中。一、为 Ubuntu 构建 StarRocks Artifacts 镜像构建 Ubuntu 版 Artifacts 镜像的命令如下需在仓库根目录执行DOCKER_BUILDKIT1 docker build --build-arg builderstarrocks/dev-env-ubuntu:branch-latest -f artifact.Dockerfile -t ghcr.io/OWNER/starrocks/artifact-ubuntu:tag ../../..实际示例main 分支DOCKER_BUILDKIT1 docker build --build-arg builderstarrocks/dev-env-ubuntu:main-latest -f artifact.Dockerfile -t ghcr.io/starrocks/starrocks/artifact-ubuntu:main ../../..命令拆解参数/部分含义DOCKER_BUILDKIT1启用 BuildKit以并行化多阶段构建提升构建速度该流水线的并行性依赖此特性--build-arg builderstarrocks/dev-env-ubuntu:main-latest指定编译 FE/BE 源码所用的 dev-env 基础镜像-f artifact.Dockerfile指定使用docker/dockerfiles/artifacts/目录下的 Artifacts 构建文件-t ghcr.io/OWNER/starrocks/artifact-ubuntu:tag为产物镜像打标签OWNER替换为你的 ghcr.io 命名空间../../..构建上下文指向仓库根目录artifact.Dockerfile位于docker/dockerfiles/artifacts/下相对路径向上三级注意artifact.Dockerfile的实际路径是docker/dockerfiles/artifacts/artifact.Dockerfile当从仓库根目录执行上述命令时-f artifact.Dockerfile依赖 docker build 的-f路径解析官方注释中的等价写法为-f docker/dockerfiles/artifacts/artifact.Dockerfile见该文件头部注释。二、发布 Ubuntu Artifacts 镜像到 ghcr.iodocker push ghcr.io/OWNER/starrocks/artifact-ubuntu:tag实际示例docker push ghcr.io/starrocks/starrocks/artifact-ubuntu:main发布前请确保已通过docker login ghcr.io完成 GitHub Container Registry 的身份认证并确认该命名空间下具备推送权限。三、为 CentOS 7 构建 StarRocks Artifacts 镜像CentOS 7 版的构建流程与 Ubuntu 完全一致只需把builder换成dev-env-centos7镜像、并把镜像名中的发行版标识改为centos7DOCKER_BUILDKIT1 docker build --build-arg builderstarrocks/dev-env-centos7:branch-latest -f artifact.Dockerfile -t ghcr.io/OWNER/starrocks/artifact-centos7:tag ../../..实际示例main 分支DOCKER_BUILDKIT1 docker build --build-arg builderstarrocks/dev-env-centos7:main-latest -f artifact.Dockerfile -t ghcr.io/OWNER/starrocks/artifact-centos7:main ../../..同一份artifact.Dockerfile即可产出 Ubuntu 与 CentOS 7 两种 Artifacts 镜像区别仅在于builder参数。底层 dev-env 的 CentOS 7 版本由dev-env.Dockerfile中的--build-arg distrocentos7构建而来。四、发布 CentOS 7 Artifacts 镜像到 ghcr.iodocker push ghcr.io/OWNER/starrocks/artifact-centos7:tag实际示例docker push ghcr.io/starrocks/starrocks/artifact-centos7:main源码纵深artifact.Dockerfile 内部的三段式构建要真正理解 Artifacts 镜像需要走进 artifact.Dockerfile。它定义了若干可调参数与四个构建阶段可调构建参数参数默认值作用builderstarrocks/dev-env-ubuntu:latest编译阶段的基础镜像RELEASE_VERSION空注入org.starrocks.version标签的版本号BUILD_TYPERelease后端编译模式可取Release/DEBUG/ASANMAVEN_OPTS-Dmaven.artifact.threads128传给 FE Maven 构建的 JVM 参数BUILD_ROOT/build仓库源码在容器内的拷贝目录阶段一fe-builder —— 编译 FE 与 BrokerFROM ${builder} as fe-builder COPY . ${BUILD_ROOT} RUN --mounttypecache,target/root/.m2/ STARROCKS_VERSION${RELEASE_VERSION} BUILD_TYPE${BUILD_TYPE} MAVEN_OPTS${MAVEN_OPTS} ./build.sh --fe --with-maven-batch-mode ON --clean RUN --mounttypecache,target/root/.m2/ cd fs_brokers/apache_hdfs_broker/ STARROCKS_VERSION${RELEASE_VERSION} MAVEN_OPTS${MAVEN_OPTS} ./build.sh复用 dev-env 中预置的编译工具链与 Maven 仓库--mounttypecache,target/root/.m2/是 BuildKit 的缓存挂载跨构建复用 Maven 依赖缓存显著加速迭代第一阶段同时产出 FE 产物与 HDFS Broker 产物后者位于fs_brokers/apache_hdfs_broker/output。阶段二be-builder —— 并行编译 BEFROM ${builder} as be-builder RUN --mounttypecache,target/root/.m2/ STARROCKS_VERSION${RELEASE_VERSION} BUILD_TYPE${BUILD_TYPE} MAVEN_OPTS${MAVEN_OPTS} ./build.sh --be --enable-shared-data --clean -j nproc与 FE 构建在两个独立 stage 中并行执行这正是 docker/dockerfiles/README.md 所述利用 BuildKit 并行构建以获取最优速度的实现--enable-shared-data表明该流水线产物支持存算分离场景-j $(nproc)按宿主机核数启用并行编译。阶段三downloader —— 下载诊断工具FROM ubuntu:24.04 as downloader ARG DD_AGENT_VERSION ... ADD ${FINAL_DOWNLOAD_URL} /datadog/dd-java-agent.jar ADD https://arthas.aliyun.com/arthas-boot.jar /arthas/arthas-boot.jar RUN wget ... ddprof ... -O /datadog/ddprof该阶段预下载三类 Java/性能诊断组件DataDog Java Agentdd-java-agent.jar可用DD_AGENT_VERSION固定版本缺省取最新、Arthas 诊断工具arthas-boot.jar以及用于 BE 性能剖析的ddprof。阶段四busybox 终态 —— 组装精简产物镜像FROM busybox:latest LABEL org.opencontainers.image.sourcehttps://github.com/starrocks/starrocks LABEL org.starrocks.version${RELEASE_VERSION:-UNKNOWN} COPY --fromfe-builder ${BUILD_ROOT}/output /release/fe_artifacts COPY --frombe-builder ${BUILD_ROOT}/output /release/be_artifacts COPY --fromfe-builder ${BUILD_ROOT}/fs_brokers/apache_hdfs_broker/output /release/broker_artifacts COPY --fromdownloader /arthas/arthas-boot.jar /release/fe_artifacts/fe/arthas/arthas-boot.jar COPY --fromdownloader /datadog/dd-java-agent.jar /release/fe_artifacts/fe/datadog/dd-java-agent.jar COPY --fromdownloader /datadog/ddprof /release/be_artifacts/be/datadog/ddprof WORKDIR /release最终镜像内部分区明确/release/fe_artifactsFE 产物/release/be_artifactsBE 产物/release/broker_artifactsHDFS Broker 产物FE 目录内预置 Arthas 与 DataDog Java AgentBE 目录内预置 ddprof便于运行时诊断。下游消费Artifacts 镜像如何进入运行时镜像Artifacts 镜像不是终点而是 k8s 运行时镜像的原料。FE、BE/CN、All-in-One 三类运行时镜像的 Dockerfile 均支持两种产物来源以ARTIFACT_SOURCE参数区分image从 Artifacts 镜像拷贝构件生产流水线路径local从本地构建目录output/拷贝构件本地开发调试路径。以 fe-ubuntu.Dockerfile 为例ARG ARTIFACTIMAGEstarrocks/artifacts-ubuntu:latest FROM ${ARTIFACTIMAGE} AS artifacts-from-image ... FROM artifacts-from-${ARTIFACT_SOURCE} AS artifacts ... COPY --fromartifacts --chown$USER:$GROUP /release/fe_artifacts/ $STARROCKS_ROOT/be-ubuntu.Dockerfile 的结构相同且会额外删除 BE 的.debuginfo符号文件以缩减体积。实际构建命令见 fe/README.md 与 be/README.md# 从 Artifacts 镜像打包 FE 运行时镜像 DOCKER_BUILDKIT1 docker build --build-arg ARTIFACT_SOURCEimage --build-arg ARTIFACTIMAGEghcr.io/starrocks/starrocks/artifact-ubuntu:main -f fe-ubuntu.Dockerfile -t fe-ubuntu:main ../../.. # 从 Artifacts 镜像打包 BE/CN 运行时镜像 DOCKER_BUILDKIT1 docker build --build-arg ARTIFACT_SOURCEimage --build-arg ARTIFACTIMAGEghcr.io/starrocks/starrocks/artifact-ubuntu:main -f be-ubuntu.Dockerfile -t be-ubuntu:main ../../..allin1-ubuntu.Dockerfile 同样以ARTIFACTIMAGEghcr.io/starrocks/starrocks/artifact-ubuntu:main作为默认产物来源构建启动即拉起完整 FE BE 集群栈的开发测试镜像。CN 镜像与 BE 镜像共享同一产物仅入口脚本不同be_entrypoint.sh与cn_entrypoint.sh见 be/README.md。由此可见一份 Artifacts 镜像 不同运行时 Dockerfile FE、BE、CN、All-in-One 多种 k8s 部署镜像这正是该设计产物一次构建、多场景复用的核心价值。实操自查清单确认DOCKER_BUILDKIT1已启用多阶段并行构建依赖 BuildKit按分支 发行版规则选定正确的starrocks/dev-env-${distro}:${branch}-latest镜像在仓库根目录执行构建-f指向docker/dockerfiles/artifacts/artifact.Dockerfile上下文为../../..用docker push发布前先完成 ghcr.io 登录与权限确认下游构建运行时镜像时将ARTIFACTIMAGE指向刚发布的 Artifacts 镜像标签保持发行版一一对应Ubuntu 产物配 Ubuntu 运行时CentOS 7 产物配 CentOS 7 运行时。参考路径速查关联文档docker/dockerfiles/artifacts/README.md构建文件docker/dockerfiles/artifacts/artifact.Dockerfile流水线总览docker/dockerfiles/README.mddev-env 镜像docker/dockerfiles/dev-env/README.md 与 dev-env.DockerfileFE 运行时镜像docker/dockerfiles/fe/fe-ubuntu.DockerfileBE/CN 运行时镜像docker/dockerfiles/be/be-ubuntu.DockerfileAll-in-One 镜像docker/dockerfiles/allin1/README.md【免费下载链接】starrocksThe worlds fastest open query engine for sub-second analytics both on and off the data lakehouse. With the flexibility to support nearly any scenario, StarRocks provides best-in-class performance for multi-dimensional analytics, real-time analytics, and ad-hoc queries. A Linux Foundation project.项目地址: https://gitcode.com/GitHub_Trending/st/starrocks创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/15 15:47:50

Moonshine 本地跑通语音转写:3 步从克隆到出字

Moonshine 本地跑通语音转写:3 步从克隆到出字 【免费下载链接】moonshine Very low latency speech to text, intent recognition, and text to speech, for building voice agents and interfaces 项目地址: https://gitcode.com/GitHub_Trending/moonshine3/mo…

2026/9/15 15:57:51

30分钟跑通 DINOv3 零样本语义分割:dinotxt 部署实战教程

30分钟跑通 DINOv3 零样本语义分割:dinotxt 部署实战教程 【免费下载链接】dinov3 Reference PyTorch implementation and models for DINOv3 项目地址: https://gitcode.com/GitHub_Trending/di/dinov3 DINOv3 零样本语义分割实战教程,主题是 di…

2026/9/15 15:52:50

vectorbt向量化回测实战:从环境踩坑到千策并发

1. 为什么“一晚跑上千个策略”听起来很爽,但很多人装上vectorbt后连第一个回测都跑不起来?vectorbt 这个名字在量化圈子里最近两年确实火得有点突然。你刷技术社区、看知乎问答、甚至翻 GitHub Trending,总能看到它被冠以“向量化回测天花板…

2026/9/15 4:54:30

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/15 0:01:16

AI英语单词APP开发:自适应学习算法与移动端优化实践

1. 项目概述 作为一名在移动应用开发领域摸爬滚打多年的老手,我最近完成了一个AI英语单词APP的开发项目。这个项目将传统单词记忆方法与现代AI技术相结合,打造了一款能够智能适应不同用户学习习惯的英语学习工具。 市面上大多数单词APP都存在一个通病&a…

2026/9/15 0:01:16

Flutter与OpenHarmony结合开发手语学习APP实战

1. 项目背景与核心价值作为一名同时接触过Flutter和OpenHarmony的开发者,最近我完成了一个基于Flutter for OpenHarmony的手语学习APP实战项目。这个项目最大的特点在于实现了跨平台框架与国产操作系统深度结合的创新实践——用Flutter开发的应用能完美运行在OpenHa…

2026/9/15 0:01:16

六个月成为机器人工程师:从ROS2到SLAM的实战路径

1. 六个月的紧迫感从哪来:先搞清楚你要成为哪种机器人工程师说实话,六个月的期限并不是一个宽松的时间线。市面上任何一本正经的机器人学教材都超过五百页,ROS2的官方文档可以翻到你怀疑人生,再加上ABB、KUKA这些工业机器人厂家动…

2026/9/15 14:22:53

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/15 11:42:23

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码