Compile StarRocks with Docker
This topic describes how to compile StarRocks using Docker.
Overviewβ
StarRocks provides development environment images for Ubuntu (22.04 and 24.04), CentOS 7.9, and Rocky Linux 9. With the image, you can launch a Docker container and compile StarRocks in the container.
Starting from v4.2, the development environment changes as follows:
- CentOS 7 reached its End-of-Life on June 30, 2024, so its build distribution is discontinued and replaced by Rocky Linux 9. CentOS 7 images remain available only for v4.1 and earlier.
- The Ubuntu development environment is upgraded from Ubuntu 22.04 (v4.1 and earlier) to Ubuntu 24.04 (v4.2 and later). The image name
starrocks/dev-env-ubuntuis unchanged.
StarRocks version and DEV ENV imageβ
Different branches of StarRocks correspond to different development environment images provided on StarRocks Docker Hub.
-
For Ubuntu (22.04 for v4.1 and earlier, 24.04 for v4.2 and later):
Branch name Image name main starrocks/dev-env-ubuntu:latest branch-4.1 starrocks/dev-env-ubuntu:4.1-latest branch-4.0 starrocks/dev-env-ubuntu:4.0-latest branch-3.5 starrocks/dev-env-ubuntu:3.5-latest -
For CentOS 7.9 (v4.1 and earlier; discontinued from v4.2):
Branch name Image name branch-4.1 starrocks/dev-env-centos7:4.1-latest branch-4.0 starrocks/dev-env-centos7:4.0-latest branch-3.5 starrocks/dev-env-centos7:3.5-latest -
For Rocky Linux 9 (v4.2 and later):
Branch name Image name main starrocks/dev-env-rocky9:latest
Prerequisitesβ
Before compiling StarRocks, make sure the following requirements are satisfied:
-
Hardware
Your machine must have at least 8 GB RAM.
-
Software
- Your machine must be running on Ubuntu 22.04 or 24.04, CentOS 7.9, or Rocky Linux 9.
- You must have Docker installed on your machine and version v20.10.10 at least.
Step 1: Download the imageβ
Download the development environment image by running the following command:
# Replace <image_name> with the name of the image that you want to download,
# for example, `starrocks/dev-env-ubuntu:latest`.
# Make sure you have choose the correct image for your OS.
docker pull <image_name>
Docker automatically identifies the CPU architecture of your machine and pulls the corresponding image that suits your machine. The linux/amd64 images are for the x86-based CPUs, and linux/arm64 images are for the ARM-based CPUs.
Step 2: Compile StarRocks in a Docker containerβ
You can launch the development environment Docker container with or without the local host path mounted. We recommend you launch the container with the local host path mounted, so that you can avoid re-downloading the Java dependency during the next compilation, and you do not need to manually copy the binary files from the container to your local host.
-
Launch the container with the local host path mounted:
-
Clone the StarRocks source code to your local host.
git clone https://github.com/StarRocks/starrocks.git -
Launch the container.
# Replace <code_dir> with the parent directory of the StarRocks source code directory.
# Replace <branch_name> with the name of the branch that corresponds to the image name.
# Replace <image_name> with the name of the image that you downloaded.
docker run -it -v <code_dir>/.m2:/root/.m2 \
-v <code_dir>/starrocks:/root/starrocks \
--name <branch_name> -d <image_name> -
Launch a bash shell inside the container you have launched.
# Replace <branch_name> with the name of the branch that corresponds to the image name.
docker exec -it <branch_name> /bin/bash -
Compile StarRocks in the container.
cd /root/starrocks && ./build.sh
-
-
Launch the container without the local host path mounted:
-
Launch the container.
# Replace <branch_name> with the name of the branch that corresponds to the image name.
# Replace <image_name> with the name of the image that you downloaded.
docker run -it --name <branch_name> -d <image_name> -
Launch a bash shell inside the container.
# Replace <branch_name> with the name of the branch that corresponds to the image name.
docker exec -it <branch_name> /bin/bash -
Clone the StarRocks source code to the container.
git clone https://github.com/StarRocks/starrocks.git -
Compile StarRocks in the container.
cd starrocks && ./build.sh
-
Troubleshootingβ
Q: The StarRocks BE building fails, and the following error message has been returned:
g++: fatal error: Killed signal terminated program cc1plus
compilation terminated.
What should I do?
A: This error message indicates a lack of memory in the Docker container. You need to allocate at least 8 GB of memory resources to the container.