在Neo4j Docker内从备份创建Neo4j数据库

5
Neo4j对我来说是新的。我有一个neo4j数据库备份,我想通过使用该备份创建一个数据库来构建一个docker容器。
我知道我可以使用`neo4j-admin restore --from= [--database=] [--force[=]]`命令,但我正在寻找一些东西,当创建容器时,docker容器将能够使用它来重新创建数据库。 neo4j docker image的文档在容器内部使用现有的数据库。但我需要还原备份并从中创建数据库。
1个回答

7

扩展脚本官方镜像挂钩

Neo4j的官方镜像提供了一个挂钩,使您可以在启动时加载数据。为此,您必须在运行时定义名为EXTENSION_SCRIPT的环境变量,该变量指向要运行的数据库恢复脚本(请参见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

这正是我想要的。现在我得想办法进行恢复操作。这个问题可能需要在另一个提问中解决。 - Ayushya
一个重要的事情需要注意,restore 功能在企业版中可用,而社区版中不可用。来自这个问题 - Ayushya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接