Я использую Docker для запуска нескольких экземпляров neo4j для моего проекта.У меня есть требование, что я должен загрузить дамп графика в один из моего док-контейнера neo4j, и я должен сделать это снова и снова (так как дамп графика будет предоставлен отдельной группой людей).
Это мои шаги, которые я выполнил, чтобы сделать то же самое -
# docker run --publish=7474:7474 --publish=7687:7687 \
--volume=/home/dimension/neo4j/container3/data:/data \
--volume=/home/dimension/neo4j/container3/logs:/logs \
--volume=/home/dimension/neo4j/container3/conf:/conf \
--volume=/home/dimension/neo4j/container3/plugins:/plugins \
neo4j:3.3.3
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eee581b2f493 neo4j:3.3.3 "/docker-entrypoint.…" 2 hours ago Up 2 seconds 0.0.0.0:7474->7474/tcp, 7473/tcp, 0.0.0.0:7687->7687/tcp priceless_ride
Это вызывает контейнер, но база данных пуста.Затем я попробовал следующее, чтобы загрузить дамп neo4j в мой недавно построенный контейнер Docker
# docker stop priceless_ride
priceless_ride
# cp home/dimension/neo4j/dumps/2018-09-05.dump ~/neo4j/container3/data/
# docker run --publish=7474:7474 --publish=7687:7687 \
--volume=/home/dimension/neo4j/container3/data:/data \
--volume=/home/dimension/neo4j/container3/logs:/logs \
--volume=/home/dimension/neo4j/container3/conf:/conf \
--volume=/home/dimension/neo4j/container3/plugins:/plugins \
-i -t neo4j:3.3.3 /bin/bash
Приведенная выше команда создает отдельный контейнер и запускает контейнер в интерактивном режиме.Как только я попаду внутрь контейнера, я запускаю -
bash-4.4# bin/neo4j-admin load --from=/data/2018-09-05.dump --database=graph.db --force
bash-4.4# exit
Теперь я выполню команду docker ps -a
, я увижу 2 контейнера в выводе
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
073c31c75ff5 neo4j:3.3.3 "/docker-entrypoint.…" 8 seconds ago Exited (0) 3 seconds ago focused_zhukovsky
eee581b2f493 neo4j:3.3.3 "/docker-entrypoint.…" 3 hours ago Exited (0) 7 minutes ago priceless_ride
Мне нужно удалить только что построенныйконтейнер как то больше не нужен.выполнив docker rm focused_zhukovsky
Все работает нормально, когда я перезапустил свой контейнер, выполнив команду
# docker start priceless_ride
и проверил браузер, используя http://127.0.0.1:7474/browser/
, контейнер теперь имеет загруженную форму базы данныхДамп.
Выполнение вышеупомянутых шагов для загрузки дампа графика - это нормально, но это громоздко, если мне придется делать это снова и снова.Это более чистый способ загрузки дампа neo4j без необходимости запуска отдельного контейнера в интерактивном режиме, а затем запускает команду neo4j-admin load
.
Возможно ли запустить докер-контейнер без запуска neo4j внутри него.Если это возможно, я могу зайти внутрь контейнера и запустить команду neo4j-admin load
столько раз, сколько захочу.
Я застрял в этой проблеме довольно давно.Я буду очень признателен за любую помощь по этому вопросу.