يتم تشغيل حاوية عامل الميناء ل نيو 4 جي كما في الوثائق وتعمل بشكل صحيح باستخدام الأمر التالي:
$ 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.dumpcommand failed: the database is in use -- stop Neo4j and try again
ومع ذلك ، إذا تم إيقاف عملية نيو 4 ، والتي يبدو أنها الطريقة الوحيدة لتحرير قاعدة البيانات ، يتم إغلاق الحاوية. يبدو أن هذا هو السلوك المتوقع من عامل الميناء. لذلك ، يبدو أنه من المستحيل الاتصال neo4j-admin dump
من داخل الحاوية دون استخدام قاعدة البيانات.
كيف يمكن حل هذا مع الاستمرار في استخدام عامل الميناء?
1: إيقاف الحاوية.
docker stop myname-neo4j
2: إزالة الحاوية
docker rm myname-neo4j
3: تشغيل الحاوية كما وضع تفاعلي (- ذلك) دون خيار (فصل) وتنفيذ قذيفة (/بن/باش ).
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
أنت الآن داخل حاوية نيو 4 جي دون تشغيل الأجسام القريبة من الأرض.
4: تأكد من أن الأجسام القريبة من الأرض لا تصل من خلال زيارة نقطة نهاية أوري في (http://yourhost:7474 ). يجب أن ترى رسالة" غير قادر على الاتصال".
5: تفريغ قاعدة البيانات الخاصة بك
docker exec -ti myname-neo4j bin/neo4j-admin dump --database=graph.db --to=/home/name/myname.dump
Ali
May 2, 2022, 8:22pm
#3
فعلت هذا:
docker stop [neo4j container] docker run --name dump --entrypoint="/bin/bash" -it -v $HOME/neo4j/data:/data neo4j:3.1.1 -c "neo4j-admin dump --to=/data/db.dump" docker start [neo4j container]
ثم يمكنك إما الحفاظ على & مثل; تفريغ & مثل; الحاويات وإعادة استخدامها, أو مجرد إزالته. سيتم تطبيق نفس المفهوم مع معلمة نقطة الدخول و-ج لإجراء التحميل.
عن طريق الصدفة انها الآن أسهل بكثير للقيام بذلك في نيو 4ج 4.0 لأنه يمكنك إيقاف وبدء قواعد البيانات دون الحاجة إلى إغلاق حاوية عامل الميناء كله.
حتى إذا أردنا أن تأخذ تفريغ قاعدة بيانات تسمى 'فو' ،ونحن نفعل ما يلي:
STOP DATABASE foodocker exec -it our-neo4j-container neo4j-admin dump --database=foo --to=/tmp/foo.db.dumpdocker cp our-neo4j-container:/tmp/foo.db.dump .START DATABASE foo
كتب أيضا على النحو بلوق وظيفة - https://markhneedham.com/blog/2020/01/28/neo4j-database-dump-docker-container/
كان لي نفس المشكلة من قبل ، لذلك كتبت هذا الحل لتفريغ البيانات نيو 4ج وسحبه خارج الحاوية إلى الجهاز المضيف.
docker rm --force neo4j-dumpdocker run \--name neo4j-dump \--env-file /storage/bin/.neo4j.env \--mount type=bind,source=<neo4j_data_folder>,target=/data \neo4j:3.1.1 bin/neo4j-admin dump --database=graph.db --to=/graph.db.dumpdocker cp `docker ps -aqf "name=neo4j-dump"`:/graph.db.dump <target_dump_file>docker rm --force neo4j-dump
سيؤدي ذلك إلى إنشاء حاوية جديدة وتفريغ البيانات بدلا من بدء خدمة نيو 4ج ، ثم نسخ التفريغ إلى المضيف ، فقط تحديث وإلى لك