docker安裝部署neo4j


docker部署neo4j

環境:ubuntu16.04LTS

docker安裝

詳見:菜鳥教程(docker安裝)

docker國內鏡像源配置

第一步,進入阿里雲,登陸后點擊左側的鏡像加速,生成自己的鏡像加速地址。

neo4j鏡像源配置1

第二步,選擇ubuntu,執行阿里雲推薦的終端命令,即可更新docker的鏡像源為阿里雲鏡像。

docker部署neo4j

拉取neo4j鏡像

第一步,從鏡像源中找合適的鏡像

docker search neo4j

neo4j鏡像源查找

第二步,拉取鏡像源

docker pull neo4j(:版本號) //缺省 “:版本號” 時默認安裝latest版本的

第三步,查看本地鏡像,檢驗是否拉取成功

docker images

檢查本地鏡像

構建neo4j容器

第一步,在你根目錄的任意一個子目錄(我這里是/home)下建立四個基本的文件夾

  • data——數據存放的文件夾
  • logs——運行的日志文件夾
  • conf——數據庫配置文件夾(在配置文件neo4j.conf中配置包括開放遠程連接、設置默認激活的數據庫)
  • import——為了大批量導入csv來構建數據庫,需要導入的節點文件nodes.csv和關系文件rel.csv需要放到這個文件夾下)
docker run -d --name container_name \  //-d表示容器后台運行 --name指定容器名字
	-p 7474:7474 -p 7687:7687 \  //映射容器的端口號到宿主機的端口號
	-v /home/neo4j/data:/data \  //把容器內的數據目錄掛載到宿主機的對應目錄下
	-v /home/neo4j/logs:/logs \  //掛載日志目錄
	-v /home/neo4j/conf:/var/lib/neo4j/conf   //掛載配置目錄
	-v /home/neo4j/import:/var/lib/neo4j/import \  //掛載數據導入目錄
	--env NEO4J_AUTH=neo4j/password \  //設定數據庫的名字的訪問密碼
	neo4j //指定使用的鏡像

一個可以直接復制粘貼到終端執行的代碼模板

docker run -d --name container_name -p 7474:7474 -p 7687:7687 -v /home/neo4j/data:/data -v /home/neo4j/logs:/logs -v /home/neo4j/conf:/var/lib/neo4j/conf -v /home/neo4j/import:/var/lib/neo4j/import --env NEO4J_AUTH=neo4j/password neo4j

其中container_name可以自己指定,掛載在根目錄下的子目錄可以根據你自己的實際情況進行替換,我這里是/home。另外NEO4J_AUTH也是你自己來進行設置。

執行完上述命令后就在后台把neo4j容器啟動起來了,這個時候你就能在宿主機的瀏覽器中輸入

localhost:7474

輸入用戶名和密碼就能登錄到數據庫了。

瀏覽器登陸數據庫

neo4j配置

上述方式啟動的neo4j是按照默認的配置進行啟動的,而默認的數據庫配置是不允許遠程登陸的,這樣對於在服務器上使用docker搭載neo4j的同學來說,就很不方便了。所以我們對默認配置進行一些改變,改變如下:

// 進入容器配置目錄掛載在宿主機的對應目錄,我這里是/home/neo4j/conf
cd /home/neo4j/conf

// vim編輯器打開neo4j.conf
vim neo4j.conf

// 進行以下更改
//在文件配置末尾添加這一行
dbms.connectors.default_listen_address=0.0.0.0  //指定連接器的默認監聽ip為0.0.0.0,即允許任何ip連接到數據庫

//修改
dbms.connector.bolt.listen_address=0.0.0.0:7687  //取消注釋並把對bolt請求的監聽“地址:端口”改為“0.0.0.0:7687”
dbms.connector.http.listen_address=0.0.0.0:7474  //取消注釋並把對http請求的監聽“地址:端口”改為“0.0.0.0:7474”

保存后退出,重啟neo4j容器,可以使用容器的省略id或者生成容器時指定的容器名進行重啟。

docker restart 容器id(或者容器名)

防火牆設置

// 查看當前防火牆狀態,若為“inactive”,則防火牆已關閉,不必進行接續操作。
sudo ufw status

// 若防火牆狀態為“active”,則使用下列命令開放端口
sudo ufw allow 7474
sudo ufw allow 7687

// 重啟防火牆
sudo ufw reload

neo4j數據導入

neo4j數據的批量導入方法

為了加快速度,使用官方的Neo4j-import進行導入

// 數據准備
清空data/databases/graph.db文件夾(如果有),將清洗好的結點文件nodes.csv和關系文件rel.csv拷貝到宿主機/home/neo4j/import中

// docker以exec方式進入容器的交互式終端
docker exec -it container_name(or container_id) /bin/bash

// 停掉neo4j
bin/neo4j stop

//使用如下命令導入
bin/neo4j-admin import \
	--database=graph.db \	        //指定導入的數據庫,沒有系統則會在data/databases下自動創建一個
	--nodes ./import/nodes.csv 		//指定導入的節點文件位置
	--relationships ./import/rel.csv //指定導入的關系文件位置
	--skip-duplicate-nodes=true 	//設置重復節點自動過濾
	--skip-bad-relationships=true 	//設置bad關系自動過濾
	
//可執行一行式終端命令
bin/neo4j-admin import --database=graph.db --nodes ./import/nodes.csv --relationships ./import/rel.csv --skip-duplicate-nodes=true --skip-bad-relationships=true

// 容器內啟動neo4j
bin/neo4j start

// 退出交互式終端但是保證neo4j后台繼續運行
ctrl + P + Q

//保險起見,重啟neo4j容器
docker restart container_name(or container_id)

重啟后使用另一台主機向服務器發送http請求進行遠程登陸,在瀏覽器中輸入

服務器ip:7474

切換連接模式bolt:/ ,輸入用戶名和密碼進行登陸,登陸成功發現在數據庫一欄沒找到新導入的數據庫graph.db

這是因為配置不夠全,繼續進到容器掛載到宿主機的/home/neo4j/conf中對neo4j.conf進行配置

//在文件末尾添加默認的數據庫
dbms.active_database=graph.db

// 保存后重啟容器
docker restart container_name(or container_id)

重新進行遠程連接,此時數據庫的默認選擇應該就切換到了新導入的graph.db。

數據清洗

數據如何清洗成兩個符合neo4j-import導入格式的csv文件?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM