メインコンテンツまでスキップ

Build StarRocks in Docker

Dockerを使用してStarRocksをコンパイルする

このトピックでは、Dockerを使用してStarRocksをコンパイルする方法について説明します。

概要

StarRocksは、Ubuntu 22.04およびCentOS 7.9の両方のための開発環境イメージを提供しています。このイメージを使用して、Dockerコンテナを起動し、コンテナ内でStarRocksをコンパイルすることができます。

StarRocksバージョンとDEV ENVイメージ

StarRocksの異なるブランチには、StarRocks Docker Hubで提供される異なる開発環境イメージが対応しています。

  • Ubuntu 22.04向け:

    ブランチ名

    イメージ名

    main

    starrocks/dev-env-ubuntu:latest

    branch-3.1

    starrocks/dev-env-ubuntu:3.1-latest

    branch-3.0

    starrocks/dev-env-ubuntu:3.0-latest

    branch-2.5

    starrocks/dev-env-ubuntu:2.5-latest

  • CentOS 7.9向け:

    ブランチ名

    イメージ名

    main

    starrocks/dev-env-centos7:latest

    branch-3.1

    starrocks/dev-env-centos7:3.1-latest

    branch-3.0

    starrocks/dev-env-centos7:3.0-latest

    branch-2.5

    starrocks/dev-env-centos7:2.5-latest

前提条件

StarRocksをコンパイルする前に、次の要件を満たしていることを確認してください:

  • ハードウェアマシンには少なくとも8 GBのRAMが必要です。
  • ソフトウェア
    • マシンはUbuntu 22.04またはCentOS 7.9で実行されている必要があります。
    • マシンにはDockerがインストールされている必要があります。

ステップ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の依存関係を再度ダウンロードする必要がなくなり、コンテナからローカルホストにバイナリファイルを手動でコピーする必要がなくなるため、ローカルホストのパスをマウントしているコンテナを起動することをお勧めします。

  • ローカルホストのパスをマウントしてコンテナを起動する:
    1. StarRocksのソースコードをローカルホストにクローンします。

      git clone https://github.com/StarRocks/starrocks.git
    2. コンテナを起動します。

      # <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>
    3. 起動したコンテナ内でbashシェルを起動します。

      # <branch_name>をイメージ名に対応するブランチの名前に置き換えてください。
      docker exec -it <branch_name> /bin/bash
    4. コンテナ内でStarRocksをコンパイルします。

      cd /root/starrocks && ./build.sh
  • ローカルホストのパスをマウントせずにコンテナを起動する:
    1. コンテナを起動します。

      # <branch_name>をイメージ名に対応するブランチの名前に置き換えてください。
      # <image_name>をダウンロードしたイメージの名前に置き換えてください。
      docker run -it --name <branch_name> -d <image_name>
    2. コンテナ内でbashシェルを起動します。

      # <branch_name>をイメージ名に対応するブランチの名前に置き換えてください。
      docker exec -it <branch_name> /bin/bash
    3. StarRocksのソースコードをコンテナ内にクローンします。

      git clone https://github.com/StarRocks/starrocks.git
    4. コンテナ内でStarRocksをコンパイルします。

      cd starrocks && ./build.sh

トラブルシューティング

Q: StarRocks BEのビルドが失敗し、次のエラーメッセージが返されました:

g++: fatal error: Killed signal terminated program cc1plus
compilation terminated.

対処方法はありますか?

A: このエラーメッセージは、Dockerコンテナ内のメモリ不足を示しています。コンテナに少なくとも8 GBのメモリリソースを割り当てる必要があります。