同一台计算机上的多个neo4j服务器版本
我在Ubuntu 18.04上下载了两个版本的neo4j,分别是“neo4j-community-3.5.12”和“neo4j-community-3.5.8” 我使用默认设置运行3.5.8,我可以从web上看到它 对于3.5.12,我更改了conf/neo4j.conf文件,并设置了一些其他端口号,以避免与默认端口号冲突 3.5.8版本在:7474上运行良好。当我启动3.5.12时,日志显示它正在运行,但当我从浏览器检查时,它没有运行。我尝试了两种不同的端口设置,但都不起作用。下面是日志文件。 为什么它没有运行 我看到很多人建议使用docker。我也试过了 我用命令为docker设置了一个容器同一台计算机上的多个neo4j服务器版本,neo4j,graph-databases,Neo4j,Graph Databases,我在Ubuntu 18.04上下载了两个版本的neo4j,分别是“neo4j-community-3.5.12”和“neo4j-community-3.5.8” 我使用默认设置运行3.5.8,我可以从web上看到它 对于3.5.12,我更改了conf/neo4j.conf文件,并设置了一些其他端口号,以避免与默认端口号冲突 3.5.8版本在:7474上运行良好。当我启动3.5.12时,日志显示它正在运行,但当我从浏览器检查时,它没有运行。我尝试了两种不同的端口设置,但都不起作用。下面是日志文件。
sudo docker run--name db1-p7474:7474-p7687:7687-d-v/db1/data:/data-v/db1/logs:/logs-v/db1/conf:/conf--env NEO4J_AUTH=none NEO4J
这里有一个现有的/d1/data/databases/graph.db文件夹。当我转到localhost:7474时,它会显示现有的数据库
我使用命令设置另一个docker容器
sudo docker run——名称db2-p3001:7474-p3002:7473-p3003:7687-d-v/db2/data:/data-v/db2/logs:/logs-v/db2/conf:/conf——env NEO4J_AUTH=none NEO4J
在这里,我希望看到一个空的数据库,但我再次看到了已经存在的数据库。当我转到db2中的数据文件夹时。我看到它在这里创建了一些文件。为什么我会看到相同的数据库
还请注意,当我去查看数据库时,网页的标题显示它们使用的是相同的螺栓端口
我可以复制neo4j图像并使用不同的图像生成容器吗?这有用吗
我认识到多个数据库正在运行并处于活动状态,但不知何故,我无法通过浏览器访问第二个数据库。经过大量努力,我的解决方案是不使用docker 从这里下载社区服务器。它会给你一个压缩文件。把它取出来。您将拥有一个名为
neo4j-community-3.5.14
的文件夹。制作该文件夹的副本。为每个服务器实例制作一个副本
文件夹中有一个conf
文件夹,其中有一个名为neo4j.conf
的文件。打开那个文件。通过更改此文件夹中的某些设置,可以运行许多neo4j服务器。更改以下设置
要接受非本地连接,请取消注释此行:
dbms.connectors.default\u listen\u address=0.0.0
更改一些端口号,以便它们不会与已使用的端口号相交
dbms.connector.bolt.listen\u地址=:3003
dbms.connector.https.listen\u地址=:3002
dbms.connector.http.listen\u address=:3001考虑到docker命令-
cmd1:sudo docker run--name db1-p7474:7474-p7687:7687-d-v/db1/data:/data-v/db1/logs:/logs-v/db1/conf:/conf--env NEO4J_AUTH=none NEO4J
cmd2:sudo docker run——名称db2-p3001:7474-p3002:7473-p3003:7687-d-v/db2/data:/data-v/db2/logs:/logs-v/db2/conf:/conf——env NEO4J_AUTH=none NEO4J
容器端口默认作为db1
实例的同一主机端口公开。而对于db2
实例系列,则使用了3xxx
要浏览neo4j提供的UI,您可以使用映射到容器端口的7474或3001
端口
Neo4j浏览器使用默认值(从Neo4j.conf)连接到Neo4j服务器。默认设置如下所示
bolt://:7687
,其中db1
实例已将容器端口暴露给7687
主机端口。
7687端口上有一个正在运行的实例,它为db1
和db2
启动WebSocket连接
如何连接到适当的实例
使用::服务器断开连接
和:服务器连接
,使用适当的螺栓://:端口
连接字符串
映射db1
实例螺栓容器端口到不同的主机端口(即7687以外的端口)
因为没有默认值可用
(首选),设置相同的主机端口:containerport组合,例如
cmd2:sudo docker run——名称db2-p3001:7474-p3002:7473-p3003-d-v/db2/data:/data-v/db2/logs:/logs-v/db2/conf:/conf——env NEO4J_AUTH=none NEO4J
在这种情况下,必须映射一个卷,以提供更新值dbms.connector.bolt.listen\u address=:3003
如果有人还需要它:下面是如何在两个不同的docker容器中运行两个neo4j数据库neo4j_01和neo4j_02,将数据保存在不同的目录中,并在不同的端口上访问它们
docker集装箱1:neo4j_01
docker run \
--name neo4j_01 \
-p1474:7474 -p1687:7687 \
-d \
-v $HOME/neo4j_01/neo4j/data:/data \
-v $HOME/neo4j_01/neo4j/logs:/logs \
-v $HOME/neo4j_01/neo4j/import:/var/lib/neo4j/import \
-v $HOME/neo4j_01/neo4j/plugins:/plugins \
--env NEO4J_AUTH=username/enterpasswordhere \
neo4j:latest
docker集装箱2:neo4j_02
docker run \
--name neo4j_02 \
-p2474:7474 -p2687:7687 \
-d \
-v $HOME/neo4j_02/neo4j/data:/data \
-v $HOME/neo4j_02/neo4j/logs:/logs \
-v $HOME/neo4j_02/neo4j/import:/var/lib/neo4j/import \
-v $HOME/neo4j_02/neo4j/plugins:/plugins \
--env NEO4J_AUTH=username/enterpasswordhere \
neo4j:latest
执行上述代码后,可以在端口1474上访问neo4j_01(登录时,需要在第一行中将螺栓端口更改为1687,然后在第二行和第三行输入用户名和密码)
您可以使用docker kill neo4j_01停止容器,并使用docker start neo4j_01重新启动容器。数据仍然存在。它保存在$HOME/neo4j_01/neo4j/data
中
这样做,我在端口/访问错误的数据库等方面没有遇到任何问题。我正在构建场景,您为db1
和imagedb2
公开了相同的主机端口。当您使用浏览器浏览neo4j时,它会尝试连接到bolt://:7687
,在这两种情况下,它都指向db1
。这可以通过在主机端口(而不是默认端口)上公开db1
的bolt服务轻松证明,即您需要进行更改-p7687:7687
。在默认端口上找不到任何服务