使用 Docker 構建 Nebula Graph 原始碼
Nebula Graph 介紹
Nebula Graph 是開源的高效能分散式圖資料庫。專案使用 C++ 語言開發,cmake
工具構建。其中兩個重要的依賴是 Facebook 的 Thrift RPC 框架和 folly 庫.
由於專案採用了 C++ 14 標準開發,需要使用較新版本的編譯器和一些三方庫。雖然 Nebula Graph 官方給出了一份開發者構建指南,但是在本地構建完整的編譯環境依然不是一件輕鬆的事。
開發環境構建
Nebula Graph 依賴較多,且一些第三方庫需本地編譯安裝,為了方便開發者本地編譯專案原始碼, Nebula Graph 官方為大家提供了一個預安裝所有依賴的 [docker 映象](docker hub)。開發者只需如下的三步即可快速的編譯 Nebula Graph 工程,參與 Nebula Graph 的開源貢獻:
-
本地安裝好 Docker
- 將
vesoft/nebula-dev
映象pull
到本地
$ docker pull vesoft/nebula-dev
- 執行
Docker
並掛載 Nebula 原始碼目錄到容器的/home/nebula
目錄
$ docker run --rm -ti -v {nebula-root-path}:/home/nebula vesoft/nebula-dev bash
為了避免每次退出 docker 容器之後,重新鍵入上述的命令,我們在 vesoft-inc/nebula-dev-docker 中提供了一個簡單的 build.sh
指令碼,可通過 ./build.sh /path/to/nebula/root/
進入容器。
- 使用
cmake
構建 Nebula 工程
docker> mkdir _build && cd _build
docker> cmake .. && make -j2
docker> ctest # 執行單元測試
提醒
Nebula 專案目前主要採用靜態依賴的方式編譯,加上附加的一些除錯資訊,所以生產的一些可執行檔案會比較佔用磁碟空間,建議小夥伴預留 20G 以上的空閒空間給 Nebula 目錄 :)
Docker 加速小 Tips
由於 Docker 映象檔案儲存在國外,在 pull 過程中會遇到速度過慢的問題,這裡 Nebula Graph 提供一種加速 pull 的方法:通過配置國內地址解決,例如:
- Azure 中國映象 https://dockerhub.azk8s.cn
- 七牛雲 https://reg-mirror.qiniu.com
Linux 小夥伴可在 /etc/docker/daemon.json
中加入如下內容(若檔案不存在,請新建該檔案)
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com"
]
}
macOS 小夥伴請點選 Docker Desktop 圖示 -> Preferences -> Daemon -> Registry mirrors
。 在列表中新增 https://dockerhub.azk8s.cn
和 https://reg-mirror.qiniu.com
。修改後,點選 Apply & Restart 按鈕, 重啟 Docker。
Nebula Graph 社群
Nebula Graph 社群是由一群愛好圖資料庫,共同推進圖資料庫發展的開發者構成的社群。
本文由 Nebula Graph 社群 Committer 伊興路貢獻,也歡迎閱讀本文的你參與到 Nebula Graph 的開發,或向 Nebula Graph 投稿。
附錄
Nebula Graph:一個開源的分散式圖資料庫。
GitHub:https://github.com/vesoft-inc/nebula
相關文章
- 基於 Nebula Graph 構建圖學習能力
- 新手閱讀 Nebula Graph 原始碼的姿勢原始碼
- Nebula Graph 原始碼解讀系列 | Vol.00 序言原始碼
- 從原始碼構建docker-ce原始碼Docker
- Nebula Graph 原始碼解讀系列 | Vol.02 詳解 Validator原始碼
- 基於 Nebula Graph 構建百億關係知識圖譜實踐
- Nebula Graph 原始碼解讀系列 | Vol.03 Planner 的實現原始碼
- 使用 MyBatis 操作 Nebula Graph 的實踐MyBatis
- 一文了解 Nebula Graph DBaaS 服務——Nebula Graph Cloud ServiceCloud
- Nebula Graph 原始碼解讀系列|客戶端的通訊秘密——fbthrift原始碼客戶端
- Nebula Graph 原始碼解讀系列 | Vol.05 Scheduler 和 Executor 兩兄弟原始碼
- Nebula Graph 1.0 Release Note
- Nebula Graph 原始碼解讀系列|客戶端的通訊祕密——fbthrift原始碼客戶端
- 全方位講解 Nebula Graph 索引原理和使用索引
- Nebula Graph 原始碼解讀系列 | Vol.04 基於 RBO 的 Optimizer 實現原始碼
- Nebula Graph 的 Ansible 實踐
- The practice of high-performance graph computing system Plato in Nebula GraphORM
- Nebula Graph 原始碼解讀系列 | Vol.06 MATCH 中變長 Pattern 的實現原始碼
- 用 Docker swarm 快速部署分散式圖資料庫 Nebula Graph 叢集DockerSwarm分散式資料庫
- 雲原生 on nLive:雲上 Nebula Graph
- 【Tomcat 原始碼系列】原始碼構建 TomcatTomcat原始碼
- 圖資料庫 Nebula Graph TTL 特性資料庫
- Nebula Graph 在企查查的應用
- gradle構建spring原始碼GradleSpring原始碼
- 如何使用Docker構建前端專案Docker前端
- docker構建Docker
- TiDB、Nebula Graph、ArgoDB、Couchbase等資料庫TiDBGo資料庫
- 隱藏在 Nebula Graph 背後的星辰大海
- Nebula Graph|如何打造多版本文件中心
- Geospatial Data 在 Nebula Graph 中的實踐
- 基於 Nebula Graph 的 BetweennessCentrality 演算法演算法
- 使用Deno和WebSockets構建實時聊天原始碼案例Web原始碼
- Vue.js 原始碼構建Vue.js原始碼
- AvaloniaChat—從原始碼構建指南原始碼
- tomcat8.5原始碼構建Tomcat原始碼
- 如何使用Docker構建執行時間較長的指令碼Docker指令碼
- 使用JHipster構建Spring和React構建電子商務應用程式原始碼 -DEVSpringReact原始碼dev
- Flutter原始碼剖析(一):原始碼獲取與構建Flutter原始碼