使用Neo4j docker映像切换活动数据库

使用Neo4j docker映像切换活动数据库,docker,neo4j,cypher,Docker,Neo4j,Cypher,我已使用导入工具将数据导入新的Neo4j数据库,而不是标准的graph.db。我想将此数据库切换到web Neo4j。我使用了带有/var/lib/Neo4j卷的Neo4j docker映像。但是我找不到我的配置文件来更改活动数据库,即使在我挂载conf目录之后,这个文件也不会生成。 如何在web客户端或Neo4j shell中切换活动Neo4j数据库 以下是我创建neo4j容器时使用的命令: docker run --publish=7474:7474 --publish=7687:7687

我已使用导入工具将数据导入新的Neo4j数据库,而不是标准的graph.db。我想将此数据库切换到web Neo4j。我使用了带有/var/lib/Neo4j卷的Neo4j docker映像。但是我找不到我的配置文件来更改活动数据库,即使在我挂载conf目录之后,这个文件也不会生成。 如何在web客户端或Neo4j shell中切换活动Neo4j数据库

以下是我创建neo4j容器时使用的命令:

docker run --publish=7474:7474 --publish=7687:7687 --volume=/var/lib/neo4j/import:/var/lib/neo4j/import --env=NEO4J_dbms_allow_upgrade='true' --env=NEO4J_dbms.security.allow_csv_import_from_file_urls='true' neo4j:latest

您无法更改活动Neo4J实例的活动数据库。

Enterprise edition允许在不重新启动的情况下更改某些值;允许以这种方式更改的键列在中,但
dbms。active\u数据库不在其中

相反,你有几个选择

您可以挂载/conf目录

conf目录可以填充配置文件,这些文件将完全覆盖默认文件。它们不是由Neo4J生成的,您必须获取一个完整的
Neo4J.conf
文件,并将其放置在目录中,然后装入容器。您可以更改需要在该文件中添加的任何值

使用新文件更新映射目录后,您将需要跳出图像(或从图像中执行neo4j跳出)

您可以使用环境变量设置活动数据库

与您传入其他环境变量的方式类似,您可以传入其他配置选项。如果新数据库名为
newgraph.db
,并且它与
graph.db
位于同一目录中,则只需传入
--env=NEO4J\u dbms\u active\u\u database=newgraph.db
。如果它位于另一个目录中,请为该目录指定
--env=NEO4J_dbms_directories_data=/path/to/new/data/dir

由于这些是作为环境变量传递的,因此更改它们需要启动新的Docker映像

你也可以建立自己的形象。


最后一个也是可能是最激烈的选择是根据neo4j的图像创建自己的图像,并具有您需要的所有更改。通常情况下,这不是必需的,但是如果您希望清理docker调用,而不保留任何映射的配置目录,那么这是一种方法。它还将确保拥有您的自定义映像的任何人都不需要额外的配置;这是否可取取决于您和您的部署体系结构。

您的环境变量没有遵循正确的形式<原始设置键中的code>
应替换为单下划线
\u
,原始设置键中的单下划线应替换为双下划线
\u
。非常感谢您的建议,它帮助我了解了它的工作原理。但是,如何装载到使用导入工具创建的db?由于某些原因,此数据库的目录未在数据文件夹中创建。您是否使用neo4j管理箱的导入功能?这是一个一次性过程,您应该能够在主graph.db中保存所有数据,如果您将/data目录作为Docker中的映射卷装入,它将在容器重新启动时保持不变。如果您引用的是使用此过程创建的graph.db,则是,只需将其与data目录中的实际graph.db交换即可。这必须在Docker中的映射卷中,否则它无法在容器重新启动时保持。