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
Run Code Online (Sandbox Code Playgroud)
当我尝试执行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
Run Code Online (Sandbox Code Playgroud)
但是,如果 Neo4j 进程停止(这似乎是释放数据库的唯一方法),容器将关闭。这似乎是 Docker 的预期行为。因此,neo4j-admin dump在没有使用数据库的情况下,从容器内部调用似乎是不可能的。
在仍然使用 Docker 的同时如何解决这个问题?
小智 7
1:停止容器。
docker stop myname-neo4j
Run Code Online (Sandbox Code Playgroud)
2:取出容器
docker rm myname-neo4j
Run Code Online (Sandbox Code Playgroud)
3:以交互模式(-it)运行容器,不带选项(分离)并执行外壳( /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
Run Code Online (Sandbox Code Playgroud)
现在您在 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9024 次 |
| 最近记录: |