У меня экземпляр Neo4J, запущенный в Docker-контейнере. Я хочу периодически раскручивать контейнер Docker, чтобы подтвердить, что мои резервные копии пригодны для использования и исправлены путем восстановления и запуска отчета проверка согласованности . Кроме того, я не использую имя активной базы данных по умолчанию graph.db
, но вместо этого я использую neo4j
. Я хотел бы, чтобы контейнер запускался с использованием резервной копии с именем активной базы данных neo4j
, чтобы можно было выполнить выборочную проверку резервной копии (т. Е., Возможно, с помощью сценария bash с Docker или с помощью entrypoint
).
Согласно документации, сначала следует остановить Neo4J перед восстановлением из резервной копии. Однако, поскольку запуск Neo4J в док-контейнере не создает PID-файл, вы не можете успешно выполнить команду остановки. Если у меня уже запущен Docker-контейнер, я вижу следующие проблемы:
$ docker exec inf_neo4j-server_1 neo4j stop
Neo4j not running
$ docker exec inf_neo4j-server_1 neo4j-admin restore --from=/backups/neo4j-data/3.3.4/backups/neo4j/ --database=neo4j --force
command failed: the database is in use -- stop Neo4j and try again
Поэтому мне нужно использовать уникальное имя базы данных, скажем neo4j-backup
, которое в настоящее время не используется, чтобы заставить команду восстановления работать.
Как вы можете восстановить данные из резервной копии с помощью Docker, и Neo4J использует указанную активную базу данных из резервной копии? Я знаю, что могу остановить и удалить контейнер и создать его резервную копию, переключив активную базу данных с помощью следующей переменной среды в файле docker compose
или с помощью команды docker run
: "NEO4J_dbms_active__database=neo4j"
.