Docker を使用して StarRocks をコンパイルする
このトピックでは、Docker を使用して StarRocks をコンパイルする方法について説明します。
概要
StarRocks は 、Ubuntu(22.04 および 24.04)、CentOS 7.9、および Rocky Linux 9 に対応した開発環境イメージを提供しています。このイメージを使用すると、Docker コンテナを起動して、その中で StarRocks をコンパイルできます。
v4.2 以降、開発環境は以下のように変更されます。
- CentOS 7 は 2024 年 6 月 30 日に End-of-Life を迎えたため、そのビルドディストリビューションは廃止され、Rocky Linux 9 に置き換えられます。CentOS 7 イメージは v4.1 以前のバージョンでのみ利用可能です。
- Ubuntu 開発環境は Ubuntu 22.04(v4.1 以前)から Ubuntu 24.04(v4.2 以降)にアップグレードされます。イメージ名
starrocks/dev-env-ubuntuは変更されません。
StarRocks のバージョンと DEV ENV イメージ
StarRocks の異なるブランチは、StarRocks Docker Hub で提供されている異なる開発環境イメージに対応しています。
-
Ubuntu の場合(v4.1 以前は 22.04、v4.2 以降は 24.04):
ブランチ名 イメージ名 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 -
CentOS 7.9 の場合(v4.1 以前。v4.2 以降は廃止):
ブランチ名 イメージ名 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 -
Rocky Linux 9 の場合(v4.2 以降):
ブランチ名 イメージ名 main starrocks/dev-env-rocky9:latest
前提条件
StarRocks をコンパイルする前に、以下の要件を満たしていることを確認してください。
-
ハードウェア
マシンには少なくとも 8 GB の RAM が必要です。
-
ソフトウェア
- マシンは Ubuntu 22.04 または 24.04、CentOS 7.9、または Rocky Linux 9 で動作している必要があります。
- Docker がマシンにインストールされており、バージョンは少なくとも v20.10.10 である必要があります。
ステップ 1: イメージをダウンロードする
次のコマンドを実行して開発環境イメージをダウンロードします。
# <image_name> をダウンロードしたいイメージの名前に置き換えてください。
# 例えば、`starrocks/dev-env-ubuntu:latest` です。
# OS に適したイメージを選択してください。
docker pull <image_name>
Docker は自動的にマシンの CPU アーキテクチャを識別し、それに適したイメージをプルします。linux/amd64 イメージは x86 ベースの CPU 用で、linux/arm64 イメージは ARM ベースの CPU 用です。
ステップ 2: Docker コンテナ内で StarRocks をコンパイルする
ローカルホストパスをマウントするかしないかで、開発環境 Docker コンテナを起動できます。次回のコンパイル時に Java の依存関係を再ダウンロードするのを避けるため、ローカルホストパスをマウントしてコンテナを起動することをお勧めします。また、コンテナからローカルホストにバイナリファイルを手動でコピーする必要もありません。
-
ローカルホストパスをマウントしてコンテナを起動する:
-
StarRocks のソースコードをローカルホストにクローンします。
git clone https://github.com/StarRocks/starrocks.git -
コンテナを起動します。
# <code_dir> を StarRocks ソースコードディレクトリの親ディレクトリに置き換えてください。
# <branch_name> をイメージ名に対応するブランチ名に置き換えてください。
# <image_name> をダウンロードしたイメージの名前に置き換えてください。
docker run -it -v <code_dir>/.m2:/root/.m2 \
-v <code_dir>/starrocks:/root/starrocks \
--name <branch_name> -d <image_name> -
起動したコンテナ内で bash シェルを起動します。
# <branch_name> をイメージ名に対応するブランチ名に置き換えてください。
docker exec -it <branch_name> /bin/bash -
コンテナ内で StarRocks をコンパイルします。
cd /root/starrocks && ./build.sh
-
-
ローカルホストパスをマウントせずにコンテナを起動する:
-
コンテナを起動します。
# <branch_name> をイメージ名に対応するブランチ名に置き換えてください。
# <image_name> をダウンロードしたイメージの名前に置き換えてください。
docker run -it --name <branch_name> -d <image_name> -
コンテナ内で bash シェルを起動します。
# <branch_name> をイメージ名に対応するブランチ名に置き換えてください。
docker exec -it <branch_name> /bin/bash -
コンテナに StarRocks のソースコードをクローンします。
git clone https://github.com/StarRocks/starrocks.git -
コンテナ内で StarRocks をコンパイルします。
cd starrocks && ./build.sh
-
トラブルシューティング
Q: StarRocks BE のビルドが失敗し、次のエラーメッセージが返されました:
g++: fatal error: Killed signal terminated program cc1plus
compilation terminated.
どうすればよいですか?
A: このエラーメッセージは、Docker コンテナ内のメモリ不足を示しています。コンテナに少なくとも 8 GB のメモリリソースを割り当てる必要があります。