在neo4j docker里创buildneo4j databse

Neo4j对我来说是新的。 我有一个neo4j数据库的备份,我想build立一个docker容器通过使用该备份创build一个数据库。

我知道我可以使用neo4j-admin restore --from=<backup-directory> [--database=<name>] [--force[=<true|false>]]命令,但是在寻找一个docker容器将能够用来创build容器时重新创build数据库。

neo4j docker映像的文档使用容器内的退出数据库数据库。 但是我需要恢复备份并从中创build数据库。

EXTENSION_SCRIPT官方图片钩子

Neo4j官方图像提供了一个钩子,所以你可以在启动时加载数据。 为此,您必须在运行时定义一个名为EXTENSION_SCRIPT的环境variables,指向您要运行的数据库恢复脚本(请参阅https://neo4j.com/developer/docker-23/ )。

这里是一个使用docker-compose的例子(这也可以用Dockerfile来完成):

docker-compose.yml文件:

 version: '2' services: neo4j: image: neo4j:3.2 ports: - "7474:7474" - "7687:7687" environment: - EXTENSION_SCRIPT=/neo4j-data/neo4j-init.sh : volumes: - ./neo4j-data:/neo4j-data 

然后,在您的初始化脚本中,您必须首次恢复数据库一次

neo4j-init.sh文件:

 #!/bin/bash set -euo pipefail IFS=$'\n\t' # do not run init script at each container strat but only at the first start if [ ! -f /tmp/neo4j-import-done.flag ]; then /var/lib/neo4j/bin/neo4j-admin neo4j-admin restore --from=<backup-directory mount as a docker volume under /neo4j-data> [--database=<name>] [--force[=<true|false>]] touch /tmp/neo4j-import-done.flag else echo "The import has already been made." fi