跳转至

使用 Docker 编译 NebulaGraph

NebulaGraph 的源代码是使用 C++ 编写的,编译 NebulaGraph 需要安装一些依赖,这些依赖可能会与宿主机操作系统的依赖冲突,导致编译失败。为了避免这种情况,我们可以使用 Docker 来编译 NebulaGraph。NebulaGraph 提供整个编译环境的 Docker 镜像,可以帮助我们快速搭建编译环境并编译 NebulaGraph,同时避免了与宿主机操作系统的依赖冲突。本文介绍如何使用 Docker 编译 NebulaGraph 图数据库。

准备工作

在开始编译 NebulaGraph 之前,确保已经完成以下准备工作:

  1. 安装 Docker:确保用户的系统已经安装了 Docker。

  2. 克隆 NebulaGraph 源代码:将 NebulaGraph 的源代码克隆到本地。你可以使用 Git 命令来克隆代码仓库:

    git clone --branch release-3.5 https://github.com/vesoft-inc/nebula.git
    

    这将会将 NebulaGraph 的源代码克隆到当前目录的nebula子目录中。

步骤

  1. 拉取 NebulaGraph 编译镜像。

    docker pull vesoft/nebula-dev:ubuntu2004
    

    这里我们使用的是 NebulaGraph 的官方编译镜像,版本号为ubuntu2004,你也可以根据需要使用特定的版本号。详情参见nebula-dev-docker

  2. 运行编译容器。

    现在,我们可以在 Docker 容器中编译 NebulaGraph。执行以下命令:

    docker run -ti \
      --security-opt seccomp=unconfined \
      -v "$PWD":/home \
      -w /home \
      --name nebula_dev \
      vesoft/nebula-dev:ubuntu2004 \
      bash
    
    • --security-opt seccomp=unconfined:为了避免 Docker 容器中的 CMake 编译过程中出现Killed错误,不限制容器进程可以进行的系统调用。
    • -v "$PWD":/home:表示当前的 NebulaGraph 代码本地的路径会被挂载到容器内部的/home目录。
    • -w /home:将容器的工作目录设置为/home,在容器中运行任何命令都将以该目录作为当前目录。
    • --name nebula_dev:为容器指定一个名称,方便管理和操作。
    • vesoft/nebula-dev:ubuntu2004:使用vesoft/nebula-dev编译镜像的ubuntu2004版本。
    • bash:在容器中运行bash命令,进入容器的交互式终端。

    成功运行以上命令后,将会自动进入容器的交互式终端。若退出容器,可执行docker exec -ti nebula_dev bash重新进入容器。

  3. 在容器内编译 NebulaGraph。

    1. 进入 NebulaGraph 源代码目录

      cd nebula
      
    2. 创建目录build并进入该目录。

      mkdir build && cd build
      
    3. 使用 CMake 生成 makefile 文件。

      cmake -DCMAKE_CXX_COMPILER=$TOOLSET_CLANG_DIR/bin/g++ -DCMAKE_C_COMPILER=$TOOLSET_CLANG_DIR/bin/gcc -DENABLE_WERROR=OFF -DCMAKE_BUILD_TYPE=Debug -DENABLE_TESTING=OFF ..
      

      有关 CMake 的 更多信息,参见 CMake 参数

    4. 执行编译命令。

      # 根据服务器的空闲 CPU 核心数,设置合理的并行编译的线程数。比如,如果服务器有 2 个空闲 CPU 核心,可以设置为 make -j2。
      make -j2
      

    这将会开始编译 NebulaGraph,编译过程可能会花费一些时间,取决于用户的系统性能。

  4. 将生产的可执行文件和库文件安装到/usr/local/nebula目录下。

    编译成功后,在容器中的/home/nebula/build目录下将生成 NebulaGraph 的可执行文件和库文件。为了方便管理,我们可以将这些文件安装到/usr/local/nebula目录下。执行以下命令:

    make install
    

完成以上步骤后,NebulaGraph 将会被同步编译并安装到宿主机的/usr/local/nebula目录下。

后续步骤


最后更新: January 31, 2024