在本教學中,我們將學習如何使用 Docker 快速部署 Neo4j 社群版資料庫。我們將採用 docker-compose
來簡化部署過程。以下是詳細的步驟和設定說明。
本文大綱
前置準備
在開始之前,確保你的系統上已安裝 Docker 和 Docker Compose。這些工具允許你容易地運行和管理容器。
1. 創建 Docker Compose 文件
首先,你需要創建一個名為 docker-compose.yml
的文件,用以定義和配置你的 Neo4j 服務。將以下內容保存到文件中:
version: "3.3"
services:
neo4j:
image: neo4j:latest
restart: unless-stopped
ports:
- 7474:7474
- 7687:7687
volumes:
- /var/lib/docker/volumes/neo4j_volume/conf:/conf
- /var/lib/docker/volumes/neo4j_volume/data:/data
- /var/lib/docker/volumes/neo4j_volume/import:/import
- /var/lib/docker/volumes/neo4j_volume/logs:/logs
- /var/lib/docker/volumes/neo4j_volume/plugins:/plugins
environment:
- NEO4J_dbms_memory_pagecache_size=1G
- NEO4J_dbms_memory_heap_initial__size=1G
- NEO4J_dbms_memory_heap_max__size=1G
找尋其他版本的 Neo4j image: https://hub.docker.com/_/neo4j/tags
2. 環境變數解釋
在 docker-compose.yml
文件中,我們配置了多個環境變數來調整 Neo4j 的記憶體使用:
NEO4J_dbms_memory_pagecache_size
設定了頁面快取的大小。NEO4J_dbms_memory_heap_initial__size
指定了啟始堆大小。NEO4J_dbms_memory_heap_max__size
指定了最大堆大小。
更多其他環境變數: Configuration settings – Operations Manual (neo4j.com)
添加新的環境變數
為了進一步優化 Neo4j 的性能,你可能會想要調整部分環境變數。
這邊以調整 Neo4j 工作線程數量為例。
如果你想要調整 Neo4j 在處理請求時使用的工作線程數量,可以通過環境變數 NEO4J_dbms_server_threads_worker_count
進行設定。這個設定對於高負載環境下提高資料庫的響應能力尤為重要。下面我們將在 docker-compose.yml
文件中進行相應的設定。
添加環境變數
打開你的 docker-compose.yml
文件並新增以下環境變數:
environment:
- NEO4J_dbms_memory_pagecache_size=1G
- NEO4J_dbms_memory_heap_initial_size=1G
- NEO4J_dbms_memory_heap_max__size=1G
- NEO4J_dbms_server_threads_worker_count=10
server.threads.worker_count
的意義
server.threads.worker_count
是一個重要的配置選項,用於設定 Neo4j 中用於處理 REST 請求的 Jetty 伺服器的工作線程數量。這個設定不影響 Bolt 伺服器,僅對 REST 交互有效。
線程數量的重要性
增加線程數可以提高處理多個並行 REST 請求的能力,從而提高數據庫的吞吐量。然而,需要注意的是,操作系統可能會對可以使用的線程數量施加限制,不一定能達到配置中指定的最大值。
適用範圍
這個設定適用於需要高吞吐量的應用,特別是當 Neo4j 需要處理大量的 REST 請求時。適當增加工作線程數量可以顯著提升性能。
默認和有效值範圍
- 默認值: 在沒有手動設置時,Neo4j 將根據可用處理器的數量自動配置工作線程數。
- 有效值範圍: 1 到 44738 的整數。
由於環境變數名稱在 Docker 環境中需要使用底線形式,因此原始配置名
server.threads.worker_count
應改寫為NEO4J_dbms_server_threads_worker_count
。
重新啟動 Neo4j 容器
修改完 docker-compose.yml
文件後,需要重新啟動容器以使新設定生效。在命令行介面中執行以下命令:
$ docker-compose down
$ docker-compose up -d
首先用 docker-compose down
命令停止並移除當前運行的容器,然後使用 docker-compose up -d
重新啟動容器。
驗證設定
重新啟動後,你可以通過 Neo4j 的管理界面或日誌文件查看新的設定是否已正確應用。更多線程可能會顯著提升處理多請求的能力,特別是在高負載環境下。透過調整這些參數,你可以更好地控制 Neo4j 服務的性能,以應對不同的工作負載需求。
3. 啟動 Neo4j 容器
在你的終端機介面,移動到包含 docker-compose.yml
的目錄下。執行以下命令來啟動你的 Neo4j 服務:
$ docker-compose up -d
這條命令將在後台啟動 Neo4j 容器。
-d
代表 “detached” 模式,讓容器在後台運行。
4. 訪問 Neo4j
一旦容器運行,你可以通過瀏覽器訪問 Neo4j 的 Web 介面:
你將會看到 Neo4j 的登入頁面。初次使用時的預設帳密:
- username:
neo4j
- password:
neo4j
接著會要求你更新密碼。
成功登入後就會看到互動介面
5. 管理和維護
若需要停止服務,可以使用以下命令:
$ docker-compose down
此命令會停止並移除所有相關的容器實例。
結語
透過 Docker 和 Docker Compose,我們能夠快速且輕鬆地設定和運行 Neo4j 資料庫,為開發和測試提供一個高效且可控的環境。