docker - 从 neo4j docker 中的备份创建 neo4j 数据库

标签 docker neo4j

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

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

neo4j docker image 的文档使用容器内的现有数据库数据库。但我需要恢复备份并从中创建数据库。

最佳答案

EXTENSION_SCRIPT 官方图片钩子(Hook)

Neo4j 的官方镜像提供了一个钩子(Hook),因此您可以在启动时加载数据。为此,您必须定义一个名为 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

关于docker - 从 neo4j docker 中的备份创建 neo4j 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45166636/

相关文章:

java - Spring-Data-Neo4j:relationshipEntity 仅返回节点的 graphId。

linux - 从主机访问 virtualbox 客户端上的网页,包括 Ubuntu、Neo4j 项目

dockerfile install go local packages 可以吗?

node.js - 如何使用 github actions 中的 token 从私有(private) git 存储库安装 npm 包

docker - Gitlab Mocha 测试和 Docker Tag 问题

azure - 创建 Neo4j vm Terraform Message="从 Marketplace 镜像创建虚拟机需要请求中的计划信息

java - Spring 数据 Neo4j 4.0.0 : Can't Create Relationship Between Nodes with the Same Label

Neo4j Path 在 cypher-shell 中以错误的交替关系方向返回

python - 在新的 docker 用户中处理 python 包

mysql - 将wordpress部署到服务器会破坏主题