メインコンテンツまでスキップ
に最終更新

Docker を使った Doris 開発環境の簡単な構築

この記事では、Docker を使って Doris の開発用イメージを作成し、FE/BE をコンパイルして起動する方法と、VSCode Remote を組み合わせて開発・デバッグする方法を説明します。

1. 環境の準備​

コンポーネント説明
Dockerインストール済みで、起動していること
VSCode最新の安定版
Remote プラグインVSCode Remote - Containers / SSH

2. イメージの作成​

2.1 Dockerfile の作成​

作業ディレクトリに Dockerfile を作成します。VSCode では Ctrl+D を使って、次のプレースホルダーを置き換えられます。

プレースホルダー意味
<!!! your user !!!>コンテナー内に作成するユーザーの名前
<!!! your user password !!!>そのユーザーのパスワード
<!!! root password !!!>root ユーザーのパスワード
<!!! your git email !!!>git の設定に使用するメールアドレス
<!!! your git username !!!>git の設定に使用するユーザー名
FROM apache/incubator-doris:build-env-latest

USER root
WORKDIR /root
RUN echo '<!!! root password !!!>' | passwd root --stdin

RUN yum install -y vim net-tools man wget git mysql lsof bash-completion \
&& cp /var/local/thirdparty/installed/bin/thrift /usr/bin

# For better safety, create a user instead of using root
RUN yum install -y sudo \
&& useradd -ms /bin/bash <!!! your user !!!> && echo <!!! your user password !!!> | passwd <!!! your user !!!> --stdin \
&& usermod -a -G wheel <!!! your user !!!>

USER <!!! your user !!!>
WORKDIR /home/<!!! your user !!!>
RUN git config --global color.ui true \
&& git config --global user.email "<!!! your git email !!!>" \
&& git config --global user.name "<!!! your git username !!!>"

# Optionally install zsh and oh my zsh for easier use; remove if not needed
USER root
RUN yum install -y zsh \
&& chsh -s /bin/zsh <!!! your user !!!>
USER <!!! your user !!!>
RUN wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh \
&& git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions \
&& git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

2.2 イメージのビルド​

docker build -t doris .

2.3 イメージの実行​

マウントのオプションについては、Docker でのコンパイル時のマウントに関する注意事項を参照してください。ローカルの Doris ソースディレクトリをマウントしてイメージを実行することを推奨します。

Windows ユーザー向け

Windows では、マウント時にファイルシステム間のアクセスに関する問題が発生します。環境に応じて設定してください。

--cap-add SYS_PTRACE パラメーターを指定すると、Docker 内で ptrace を使用できるようになり、ptrace や GDB によるリモートデバッグに役立ちます。

docker run -it --cap-add SYS_PTRACE doris:latest /bin/bash
パラメーター用途
--cap-add SYS_PTRACEコンテナー内で ptrace を呼び出せるようにする(GDB に必要)
-it対話型 TTY
-v <local>:<container>ローカルのソースディレクトリをマウントする(必要に応じて)

2.4 zsh の設定(任意)​

zsh をインストールした場合は、~/.zshrc の plugins 行を次のように置き換えます。

plugins=(git zsh-autosuggestions zsh-syntax-highlighting)

2.5 Doris ソースコードの取得​

su <your user>
mkdir code && cd code
git clone https://github.com/apache/doris.git
cd doris
git submodule update --init --recursive

3. コンパイル​

初回のコンパイル

初回のコンパイルでは、次のコマンドを使ってクリーンビルドを強制します。

sh build.sh --clean --be --fe --ui

build-env-for-0.15.0 イメージでは thrift が 0.9 から 0.13 にアップグレードされたため、--clean を指定して新しいバージョンの thrift でコードファイルを生成する必要があります。指定しないと、互換性のないコードが生成されます。

以降は、通常どおり Doris をコンパイルします。

sh build.sh

4. 起動​

4.1 メタデータディレクトリの準備​

メタデータを保存する meta_dir ディレクトリを手動で作成します。デフォルト値は ${DORIS_HOME}/doris-meta です。

mkdir meta_dir

4.2 FE の起動​

cd output/fe
sh bin/start_fe.sh --daemon

4.3 BE の起動​

cd output/be
sh bin/start_be.sh --daemon

4.4 mysql-client での接続​

mysql -h 127.0.0.1 -P 9030 -u root

5. FAQ​

Q1: GDB で ptrace: Operation not permitted と表示される​

コンテナーの起動時に --cap-add SYS_PTRACE が指定されていません。このパラメーターを追加してコンテナーを再起動してください。

Q2: コンパイル時に thrift のバージョン不一致が報告される​

初回のコンパイルで --clean が指定されていません。クリーンアップしてから、セクション 3 のコマンドで再コンパイルしてください。

Q3: FE / BE が起動直後に終了する​

meta_dir と storage_root_path が作成されているか、ポートが使用中でないか、priority_networks にコンテナーの IP が含まれているかを確認してください。

Q4: VSCode Remote コンテナーでデバッグ対象のプロセスにアタッチできない​

SYS_PTRACE ケイパビリティが追加されていないか、VSCode C/C++ プラグインで適切な miDebuggerPath が指定されていません。