1. 安裝命令
1.1 基于正式neo4j安裝–不用
docker run --name neo4j-container -p 7474:7474 -p 7687:7687 -d neo4j
1.2 基于community安裝
需要部署兩個Neo4j,一個正式庫prod,一個測試庫dev。
neo4j默認監聽7474(HTTP-也就是瀏覽器端口)和7687(Bolt-也就是服務器接口)端口。
首先需要明確的是,通過docker部署的服務,容器內部的7474和7687端口不會沖突,因為Docker的端口映射機制是基于宿主機****端口->容器端口的隔離。
1.2.1 端口映射原理
- **容器內部端口:**每個 Neo4j 容器內部默認監聽
<font style="background-color:rgb(242,243,245);">7474</font>
(HTTP)和<font style="background-color:rgb(242,243,245);">7687</font>
(Bolt)端口。 - **宿主機****端口:**通過
<font style="background-color:rgb(242,243,245);">-p</font>
參數將宿主機的端口映射到容器的端口。例如:- 第一個容器:
<font style="background-color:rgb(242,243,245);">-p 7474:7474</font>
(宿主機7474 → 容器7474) - 第二個容器:
<font style="background-color:rgb(242,243,245);">-p 7475:7474</font>
(宿主機7475 → 容器7474)
- 第一個容器:
關鍵點: 即使容器內部都使用 <font style="background-color:rgb(242,243,245);">7474</font>
和 <font style="background-color:rgb(242,243,245);">7687</font>
,只要宿主機的映射端口不同(如 <font style="background-color:rgb(242,243,245);">7475</font>
和 <font style="background-color:rgb(242,243,245);">7688</font>
),兩個容器就能同時運行且互不沖突。
1.2.2 兩種創建方式
1.2.2.1 綁定掛載(windows絕對路徑-需要手動創建路徑)
docker run --name neo4j-dev -p 17475:7474 -p 17688:7687 -v C:\neo4j\dev:/data -v C:\neo4j\dev:/logs -d neo4j :community
- 優點:
- 直觀可控:可以直接在宿主機的文件系統中查看和修改數據文件(如
<font style="background-color:rgb(242,243,245);">C:\neo4j\data2</font>
)。 - 適合調試:方便直接修改配置文件(如
<font style="background-color:rgb(242,243,245);">neo4j.conf</font>
)或檢查日志文件(如<font style="background-color:rgb(242,243,245);">neo4j.log</font>
)。 - 完全控制目錄位置:自由選擇宿主機的存儲路徑。
- 直觀可控:可以直接在宿主機的文件系統中查看和修改數據文件(如
- 缺點:
- 需手動處理目錄權限:如果宿主機目錄權限設置不當,容器可能無法寫入。
- 跨平臺兼容性問題:Windows 路徑格式(如
<font style="background-color:rgb(242,243,245);">C:\...</font>
)在 Docker 中需要特別處理,可能與其他系統不兼容。 - 依賴宿主目錄存在性:必須預先手動創建目錄,否則啟動失敗(尤其是 Windows)。
適用場景:
- 需要直接操作宿主機文件(如開發階段修改配置文件或分析日志)。
- 數據需存放在宿主機的特定位置(如已有存儲系統需要掛載)。
1.2.2.2 Docker卷(不需要手動創建路徑)-本次使用的方案
正式:
docker run --name neo4j-prod -p 17474:7474 -p 17687:7687 -v neo4j_prod_data:/data -v neo4j_prod_logs:/logs -d neo4j:community
測試:
docker run --name neo4j-dev -p 17475:7474 -p 17688:7687 -v neo4j_dev_data:/data -v neo4j_dev_logs:/logs -d neo4j:community
- 優點:
- 自動管理:Docker 會自動創建卷并處理文件權限,無需手動干預。
- 跨平臺一致性:路徑格式統一(如
<font style="background-color:rgb(242,243,245);">/data</font>
),避免 Windows/Linux 路徑差異問題。 - 適合生產環境:數據由 Docker 托管,更安全且支持加密、備份等高級功能。
- 容器無縫遷移:容器重建或遷移時,卷可以快速復用。
- 缺點:
- 隱藏文件位置:默認卷存儲在 Docker 的私有路徑中(如
<font style="background-color:rgb(242,243,245);">C:\ProgramData\Docker\volumes</font>
),需要命令行才能查看。 - 不直接修改文件:需通過容器內部或 Docker 命令訪問數據,對普通用戶不夠直觀。
- 隱藏文件位置:默認卷存儲在 Docker 的私有路徑中(如
適用場景:
- 生產環境或需要自動化部署的場景。
- 無需直接訪問底層數據文件,注重數據安全性和一致性。
推薦使用哪種?–本次直接使用Docker卷的方式進行創建
- 推薦:生產環境使用 Docker 卷,開發環境使用綁定掛載:
- 生產環境 → 優先選 Docker 卷 安全便捷,避免路徑和權限問題,適合長期運行的穩定服務。
- 開發環境 → 優先選綁定掛載 方便直接查看和修改配置文件、日志文件,適合調試和測試。
2. 訪問
http://localhost:7474
第一次進入頁面,需要輸入用戶名密碼neo4j/neo4j,并且需要設置新密碼
3. 服務起上的用戶密碼
neo4j/neo4jneo4j
4. 停止和啟動 Neo4j 容器
要停止正在運行的 Neo4j 容器,可以使用以下命令:
docker stop neo4j-container
要再次啟動容器,使用:
docker start neo4j-container