1. 拉取 Neo4j 镜像

拉取镜像比较简单,用 Pull 就可以了。之后可以用 images 查看。

# 查看镜像
docker search neo4j
# 安装(指定版本的)neo4j
docker pull neo4j(:版本号)
# 查看镜像信息
docker images

image-20210713110015754

2. 构建 Neo4j 容器

这部分主要参考了 docker安装部署neo4j (顺带一提,这真是我见过最好的博客园博客站了~~)。

在任意文件夹构建四个子目录:data, logs, conf, import。

随后可以按照下面的方法运行镜像,获取容器。

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 //指定使用的镜像

可以直接运行的模板。其中,--nameNEO4J_AUTHpassword 后面的内容都是可以修改的。地址也是可以修改的。

下面的模板,我就将 NEO4J_AUTH 直接设置为了 none。这样登陆时就不需要输入密码了,很方便。

# 模板
docker run -d --name neo4j -p 7474:7474 -p 7687:7687 -v /data2/software/neo4j_container/data:/data -v /data2/software/neo4j_container/logs:/logs -v /data2/software/neo4j_container/conf:/var/lib/neo4j/conf -v /data2/software/neo4j_container/import:/var/lib/neo4j/import --env NEO4J_AUTH=none neo4j

3. 远程配置

是否需要远程配置依据个人而定。我看到有的博客说,不进行远程配置就无法远程登陆。我这边测试没有这种情况。如果有的话,可以修改 neo4j.conf ,在下面加入:

dbms.connector.bolt.listen_address=0.0.0.0:7687
dbms.connector.http.listen_address=0.0.0.0:7474

随后使用 restart 重启容器即可。

防止防火墙屏蔽了端口,还可以查看防火墙信息。

# 查看防火墙状态,如果是 inactive 就不用后续操作
sudo ufw status

# 如果防火墙为 active,就需要开放两个端口
sudo ufw allow 7474
sudo ufw allow 7687
sudo ufw reload

4. 常见问题

4.1 登陆时显示问题 Something went wrong: "NotFoundError: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node." and the application can't recover.

这个问题和 neo4j 还有 Chrome 的版本都没有关系,而是 Chrome 的自动翻译造成的。

关闭 Chrome 自动翻译即可解决问题。

4.2 Docker 输入账号密码报错

这个问题查阅了各种方法都没有特别好的解决方案。因此,我最后选择了不设密码。

docker 命令中指定 --envs NEO4j_AUTH=none 即可!

参考内容

  1. docker安装部署neo4j

  2. 菜鸟教程(docker安装)

  3. neo4j用chrome登录打开报错Something went wrong: “NotFoundError: Failed to execute ‘removeChild‘ on ‘Node‘

  4. neo4j 文档