आप एक डॉकर कंटेनर के भीतर एक एनईओ 4 जे डेटाबेस का डंप कैसे करते हैं?

एनईओ 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

मैंने यह किया:

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/