如何在Docker容器中执行Neo4j数据库的转储?

Neo4j的docker容器按照文档启动,并使用以下命令正常工作:

$ docker run \ --detach \ --publish=7474:7474 \ --publish=7473:7473 \ --publish=7687:7687 \ --volume=$HOME/neo4j/data:/data \ --volume=$HOME/neo4j/logs:/logs \ --volume=$HOME/neo4j/ssl:/ssl \ --ulimit=nofile=40000:40000 \ --name=myname-neo4j \ neo4j:3.1.1 

当我尝试执行数据库的neo4j-admin转储时,出现错误:

 $ docker exec -ti myname-neo4j bin/neo4j-admin dump --database=graph.db --to=/home/name/myname.dump command failed: the database is in use -- stop Neo4j and try again 

但是,如果Neo4j进程停止,这似乎是释放数据库的唯一方法,容器closures。 这似乎是Docker的预期行为。 因此,在不使用数据库的情况下,从容器中调用neo4j-admin dump似乎是不可能的。

如何在仍然使用Docker的情况下解决这个问题?

1:停止容器。

 docker stop myname-neo4j 

2:取出容器

 docker rm myname-neo4j 

3:作为交互模式运行容器(-it),不带选项(detach)并执行shell(/ bin / bash)。

 docker run \ --publish=7474:7474 \ --publish=7473:7473 \ --publish=7687:7687 \ --volume=$HOME/neo4j/data:/data \ --volume=$HOME/neo4j/logs:/logs \ --volume=$HOME/neo4j/ssl:/ssl \ --ulimit=nofile=40000:40000 \ --name=myname-neo4j \ -it \ neo4j:3.1.1 \ -c /bin/bash 

现在你在neo4j容器内而不运行Neo。

4:通过访问( http:// yourhost:7474 )中的URI端点来检查neo未启动。 您应该看到“无法连接”消息。

5:转储你的数据库

 docker exec -ti myname-neo4j bin/neo4j-admin dump --database=graph.db --to=/home/name/myname.dump