本篇主要记录在 Mac 本地上以 docker 形式部署 neo4j,整体来讲并不复杂,docker 相关东西不再赘述。这篇文章给了我很多帮助。
# docker hub 有现成的 neo4j 镜像,就用官方的第一个,拉取到本地即可。
(base) NanaLvs-MacBook-Pro:~ username$ docker search neo4j
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
neo4j Neo4j is a highly scalable, robust native gr… 999 [OK]
tpires/neo4j Neo4j is a highly scalable, robust (fully AC… 82 [OK]
kbastani/neo4j-graph-analytics Graph analytics engine for Neo4j using Apach… 28 [OK]
# 虽然我已经更新了国内的镜像源,但是安装时仍然等了很久,需要点耐心,具体耗时没跟进。
(base) NanaLvs-MacBook-Pro:~ username$ docker pull neo4j
# 查看本地的镜像 确认 neo4j 成功
(base) NanaLvs-MacBook-Pro:~ username$ docker images
有了 neo4j 的镜像之后,就可以做容器了。后面很多操作需要重启容器才会生效。
neo4j 使用 7474 和 7687 两个端口,我们指定其具体的映射,从容器的两个端口号映射到本地的端口号,为了方便记忆,端口号不变。
-p 7474:7474 -p 7687:7687
neo4j 需要 4 个文件夹,分别是 data、logs、conf、import,分别用来存放数据、运行日志、配置文件、导入 neo4j 构建数据库的源数据(会同步到容器中,包括节点文件和关系文件)。我们在本地也建 4 个文件夹,与 neo4j 容器中的一一做映射。做完映射之后,方便我们后面根据需要将数据导入到 neo4j 的容器中。为了清晰和方便,一般都是建议单独建立一个文件夹来存放刚刚提到的 4 个文件夹,比如在 user 下面建立文件夹 Neo4j,再在其下面建立刚刚说的 4 个文件夹。
# 映射本地和容器的文件夹,冒号前的是本地文件夹路径,冒号后是容器的对应文件夹
# 依次是 data、logs、conf、import
-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
设定数据库的名字和访问密码
# neo4j 就是用户名,斜杠后面的 password 就是密码
--env NEO4J_AUTH=neo4j/password
串起来的代码如下(shell 中运行当然不能直接回车了,这里只是为了方便阅读)。可以自定义 name 和 auth,路径也要根据自己的实际情况修改,最后 neo4j 意思是用 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
上面的完成之后,我们在本地浏览器打开 localhost:7474 就能看见界面了,输入自己刚刚设置的用户名和密码就可以登录了。
修改 neo4j 的 conf 配置文件,这部分我也就是直接按照资料做的,找到前面说的 4 个文件夹中的 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 容器中还是空空的,没有任何数据。下一步就是将格式正确的 csv 文件导入到 neo4j 中。
# 命令行交互方式进入容器
(base) NanaLvs-MacBook-Pro:~ username$ docker exec -it 前面创建的容器名 /bin/bash
# 进入容器中后执行下面语句(当然也不能有回车)
bin/neo4j-admin import
# 设置本次数据导入到哪个数据库中,这里就是导入到 mkg 数据库中了,如果数据库不存在会自动创建
--database=mkg
# 节点相关文件
--nodes import/entity_header.csv,import/entity.csv
# 关系相关文件
--relationships import/relation_header.csv,import/relation.csv
# 慎用,强制重新导入
--force
将刚刚建立的 mkg 数据库作为默认数据库,需要去 conf 配置文件里面增加:
dbms.active_database=graph.db