Назад | Перейти на главную страницу

загрузка дампа neo4j в контейнер докеров

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

Я застрял в этой проблеме довольно давно. Я буду глубоко признателен за любую помощь по этому вопросу.