Ein Docker-Container für Neo4j wird gemäß der Dokumentation gestartet und funktioniert ordnungsgemäß mit dem folgenden Befehl:
$ 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
Wenn ich versuche, einen neo4j-admin
Speicherauszug der Datenbank durchzuführen , wird folgende Fehlermeldung angezeigt:
$ 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
Wenn jedoch der Neo4j-Prozess gestoppt wird, was die einzige Möglichkeit zu sein scheint, die Datenbank freizugeben, wird der Container geschlossen. Dies scheint das erwartete Verhalten von Docker zu sein. Daher scheint es unmöglich zu sein, neo4j-admin dump
aus dem Container heraus aufzurufen, ohne dass die Datenbank verwendet wird.
Wie kann dies behoben werden, während Docker noch verwendet wird?
docker exec -ti myname-neo4j
und an der Bash-Eingabeaufforderung im Container ausführen.Ich hatte zuvor das gleiche Problem, also habe ich diese Problemumgehung geschrieben, um neo4j-Daten zu sichern und außerhalb des Containers auf den Host-Computer zu ziehen.
Dadurch werden neue Container- und Dump-Daten erstellt, anstatt den neo4j-Dienst zu starten. Kopieren Sie dann den Dump auf den Host, aktualisieren Sie ihn einfach und auf Ihren
quelle
Zufällig ist dies in Neo4j 4.0 jetzt viel einfacher, da Sie Datenbanken stoppen und starten können, ohne den gesamten Docker-Container herunterfahren zu müssen.
Wenn wir also einen Speicherauszug einer Datenbank namens "foo" erstellen möchten, gehen wir wie folgt vor:
Auch als Blog-Beitrag verfasst - https://markhneedham.com/blog/2020/01/28/neo4j-database-dump-docker-container/
quelle