Docker 部署 Neo4j 图数据库
前言
Neo4j 是一个高性能的基于 Java 开发的 NOSQL 图形数据库,它将结构化数据存储在网络上而不是表中;它是一个嵌入式的、基于磁盘的、具备完全的事务特性的 Java 持久化引擎。
使用 Docker 部署 Neo4j 图数据库的完整流程。内容包括拉取镜像、构建容器(配置端口映射和数据卷)、访问管理界面以及数据备份与恢复操作。详细说明了不同版本 Neo4j 的数据导入导出命令差异,并提供了停止、启动容器的基本指令,适用于本地及云服务器环境。

Neo4j 是一个高性能的基于 Java 开发的 NOSQL 图形数据库,它将结构化数据存储在网络上而不是表中;它是一个嵌入式的、基于磁盘的、具备完全的事务特性的 Java 持久化引擎。
Neo4j 分为企业版和社区版,企业版可以创建多个数据库,链接多个数据库,但是收费……;社区版只能链接一个数据库,所以社区版不支持创建数据库命令。
Neo4j 部署后默认创建名字为 neo4j 的数据库,可以直接链接这个数据库。
# 下载镜像 docker pull neo4j:5.26.2
也可以不指定版本。
# 创建 neo4j 容器
docker run -it -d -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 \
-v /home/neo4j/plugins:/var/lib/neo4j/plugins \
-e NEO4J_AUTH=neo4j/password \
--name neo4j neo4j:5.26.2
-p 7474:7474 宿主机端口映射,7474 端口为 Neo4j 界面访问端口。-p 7687:7687 宿主机端口映射,7687 端口为后台 API 接口访问端口。-v /home/neo4j/data:/data 宿主机目录挂载,将 Neo4j 存储数据挂载到宿主机目录。-v /home/neo4j/logs:/logs 宿主机目录挂载,将 Neo4j 运行日志挂载到宿主机目录。-v /home/neo4j/conf:/var/lib/neo4j/conf 宿主机目录挂载,将 Neo4j 配置文件挂载到宿主机目录。-v /home/neo4j/import:/var/lib/neo4j/import 宿主机目录挂载,将 Neo4j 数据导入目录挂载到宿主机目录。-v /home/neo4j/plugins:/var/lib/neo4j/plugins 宿主机目录挂载,将 Neo4j 插件安装目录挂载到宿主机目录。-e NEO4J_AUTH=neo4j/password 配置 Neo4j 的登录密码,用户名必须是 neo4j,密码可以自定义。访问地址:http://{{目标地址}}:7474/browser/ 本地部署可使用 localhost,云服务器请确保开放 7474 端口。
不管是导入或导出操作,第一步一定要将已启动的 Neo4j 停止(不是删除,是停止)。
# 停止容器
docker stop neo4j
docker run --interactive --tty --rm \
--volume=/home/neo4j/data:/data \
--volume=/home/neo4j/backups:/var/lib/neo4j/import \
--name neo4j_demo neo4j:5.26.2 \
neo4j-admin database dump neo4j --to-path=/var/lib/neo4j/import/
--interactive 保持标准输入流开放,允许用户通过命令行直接与容器交互。--tty 为容器分配一个虚拟终端,允许发信号给容器进行实时操作。--rm 容器完成操作并停止后自动删除容器。-v /home/neo4j/data:/data 引用刚才停止的 Neo4j 容器存储的数据。-v /home/neo4j/backups:/var/lib/neo4j/import 将数据导出后通过容器映射目录到宿主机的 /home/neo4j/backups 目录。neo4j-admin database dump neo4j --to-path=/var/lib/neo4j/import/ 导出命令,在容器内使用 neo4j-admin 工具将 neo4j 数据库备份,备份文件存到容器内 /var/lib/neo4j/import/ 目录(实际则会通过映射存到宿主机对应的挂载目录 /home/neo4j/backups)。--name neo4j_demo 注意:这里的容器名称不能和已停止的容器重名。# 5.1 版本之后,新版本导入 neo4j 数据(如果数据库存在会报错)
docker run -it --rm \
--volume=/home/neo4j/data:/data \
--volume=/home/neo4j/import:/var/lib/neo4j/import \
neo4j:5.26.2 \
neo4j-admin database load --from-path=/var/lib/neo4j/import/ neo4j
# 5.1 版本之后,新版本强制导入 neo4j 数据(无视数据库是否存在直接覆盖)
docker run -it --rm \
--volume=/home/neo4j/data:/data \
--volume=/home/neo4j/import:/var/lib/neo4j/import \
neo4j:5.26.2 \
neo4j-admin database load --from-path=/var/lib/neo4j/import/ neo4j \
--overwrite-destination=true
# 5.1 版本之前,旧版本的导入命令(如果数据库存在会报错)
docker run -it --rm \
--volume=/home/neo4j/data:/data \
--volume=/home/neo4j/import:/var/lib/neo4j/import \
neo4j:4.4.40 \
neo4j-admin load --from=/var/lib/neo4j/import/neo4j.dump --database=neo4j
# 5.1 版本之前,旧版本的强制导入命令(无视数据库是否存在直接覆盖)
docker run -it --rm \
--volume=/home/neo4j/data:/data \
--volume=/home/neo4j/import:/var/lib/neo4j/import \
neo4j:4.4.40 \
neo4j-admin load --from=/var/lib/neo4j/import/neo4j.dump --database=neo4j --force
# 旧版本的数据文件强制导入新版本数据库内(无视数据库是否存在直接覆盖)
docker run -it --rm \
--volume=/home/neo4j/data:/data \
--volume=/home/neo4j/import:/var/lib/neo4j/import \
neo4j:5.26.2 \
sh -c "neo4j-admin database load --from-path=/var/lib/neo4j/import/ neo4j --overwrite-destination=true && neo4j-admin database migrate neo4j --force-btree-indexes-to-range"
--rm 容器完成操作并停止后自动删除容器。-v /home/neo4j/data:/data 引用刚才停止的 Neo4j 容器存储的数据,目的是将数据导入到这个数据映射目录内。-v /home/neo4j/import:/var/lib/neo4j/import 将刚才导出的文件改名 'neo4j.dump'后,复制到 /home/neo4j/import 目录下,通过挂载机制会自动映射到容器内的 /home/neo4j/import 目录。neo4j-admin database load --from-path=/var/lib/neo4j/import/ neo4j 导入命令,在容器内使用 neo4j-admin 工具将 /var/lib/neo4j/import 目录下的'neo4j.dump'文件导入到 neo4j 数据库内。--overwrite-destination=true 强制导入,无视数据库是否存在直接覆盖。# 重启 Neo4j 容器
docker start neo4j

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online