Я использую докер для запуска нескольких экземпляров 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 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
командую столько раз, сколько хочу.
Я застрял в этой проблеме довольно давно. Я буду глубоко признателен за любую помощь по этому вопросу.