C# 指定neo4j docker容器的螺栓端口

C# 指定neo4j docker容器的螺栓端口,c#,docker,neo4j,docker-compose,C#,Docker,Neo4j,Docker Compose,我使用docker compose.yml文件创建了两个neo4j容器 version: '2' services: neo4jdev1: image: neo4j ports: - "7474:7474" - "7687:7687" volumes: - $HOME/neo4jdev1/data:/data expose: - "768

我使用
docker compose.yml
文件创建了两个neo4j容器

version: '2'
services:
  neo4jdev1:
    image: neo4j
    ports: 
         - "7474:7474"
         - "7687:7687"
    volumes:
         - $HOME/neo4jdev1/data:/data
    expose:
         - "7687"
         - "7474"
  neo4jdev2:
    image: neo4j
    ports: 
         - "7475:7474"
         - "7689:7689"
    volumes:
         - $HOME/neo4jdev2/data:/data
    expose:
         - "7689"
         - "7475"
当我使用
docker compose up
运行此服务时,我会运行这两个服务。我通过访问以下URL检查了这些内容

https://192.168.99.100:7474

https://192.168.99.100:7475

正如您所看到的,我正试图为我的第二个服务公开端口7689,因为我想将它用作bolt的端口,而不是默认的7687

在我的单元测试中,我尝试使用两个驱动程序连接到bolt

测试1(使用端口7687)-通过
IDriver driver=GraphDatabase.driver(“bolt://192.168.99.100:7687,AuthTokens.Basic(“neo4j”,“password”)

测试2(使用端口7689)-失败
IDriver driver=GraphDatabase.driver(“bolt://192.168.99.100:7689,AuthTokens.Basic(“neo4j”,“password”)

以下是我到目前为止所做的。我在位于
/var/lib/neo4j/conf/neo4j.conf
的容器中编辑了配置文件。我把这行从

dbms.connector.bolt.address=0.0.0:7687
to
dbms.connector.bolt.address=0.0.0:7689

保存配置文件后,测试仍然失败,并且螺栓端口在neo4j浏览器中仍然显示7687

是否有其他方法可以在docker compose文件上指定螺栓端口,或者是否有其他方法可以更改正在运行的容器本身中的螺栓端口?

请尝试:

neo4jdev2:
  image: neo4j
  ports: 
     - "7475:7474"
     - "7689:7687"
  volumes:
     - $HOME/neo4jdev2/data:/data
对于端口部分,第一个端口在容器外部使用,第二个端口在容器内部使用。

尝试:

neo4jdev2:
  image: neo4j
  ports: 
     - "7475:7474"
     - "7689:7687"
  volumes:
     - $HOME/neo4jdev2/data:/data

对于端口部分,第一个端口在容器外部使用,第二个端口在容器内部使用。

如果要在一台服务器上并行运行多个neo4j docker容器,则螺栓端口会出现问题。因此,您必须为每个具有NEO4J_dbms_connector_bolt_advised_地址的容器指定不同的内部螺栓端口

docker-compose.yml文件示例

version: '2'
services:
  neo4jmedcon:
    image: neo4j
    environment:
      NEO4J_AUTH: "none"
      NEO4J_dbms_connector_bolt_advertised__address: "localhost:10031"
    ports:
     - "10030:7474"
     - "10031:7687"
    volumes:
     - $HOME/docker/conf:/var/lib/neo4j/conf
     - $HOME/docker/neo4j/medcon/data:/var/lib/neo4j/data
     - $HOME/docker
  neo4jMK-Constance:
    image: neo4j
    environment:
      NEO4J_AUTH: "none"
      NEO4J_dbms_connector_bolt_advertised__address: "localhost:10081"
    ports:
     - "10080:7474"
     - "10081:7687"
    volumes:
     - $HOME/docker/conf:/var/lib/neo4j/conf
     - $HOME/docker/neo4j/MK-Constance/data:/var/lib/neo4j/data
     - $HOME/docker

如果您想在一台服务器上并行运行多个neo4j docker容器,那么bolt端口就会出现问题。因此,您必须为每个具有NEO4J_dbms_connector_bolt_advised_地址的容器指定不同的内部螺栓端口

docker-compose.yml文件示例

version: '2'
services:
  neo4jmedcon:
    image: neo4j
    environment:
      NEO4J_AUTH: "none"
      NEO4J_dbms_connector_bolt_advertised__address: "localhost:10031"
    ports:
     - "10030:7474"
     - "10031:7687"
    volumes:
     - $HOME/docker/conf:/var/lib/neo4j/conf
     - $HOME/docker/neo4j/medcon/data:/var/lib/neo4j/data
     - $HOME/docker
  neo4jMK-Constance:
    image: neo4j
    environment:
      NEO4J_AUTH: "none"
      NEO4J_dbms_connector_bolt_advertised__address: "localhost:10081"
    ports:
     - "10080:7474"
     - "10081:7687"
    volumes:
     - $HOME/docker/conf:/var/lib/neo4j/conf
     - $HOME/docker/neo4j/MK-Constance/data:/var/lib/neo4j/data
     - $HOME/docker

失败测试中的错误消息是什么?如果两个数据库运行在同一台主机上,则SSL连接可能会出现问题。然后,第二次连接将出现错误,因为证书与存储在
~/.neo4j/known_hosts
@MartinPreusse中的内容不匹配。例外情况是
System.Net.Sockets.SocketException:无法建立连接,因为目标计算机主动拒绝它192.168.99.100:7689
。顺便说一下,我正在使用Neo4j驱动程序进行C#刚才添加了我在下面找到的答案。失败测试中的错误消息是什么?如果两个数据库运行在同一台主机上,则SSL连接可能会出现问题。然后,第二次连接将出现错误,因为证书与存储在
~/.neo4j/known_hosts
@MartinPreusse中的内容不匹配。例外情况是
System.Net.Sockets.SocketException:无法建立连接,因为目标计算机主动拒绝它192.168.99.100:7689
。顺便说一句,我正在使用C#的Neo4j驱动程序,刚刚添加了我在下面找到的答案。另外,如果你把一个端口放在端口下,你也不需要把它放在暴露下。它是由Docker自动完成的。另外,如果你把一个端口放在ports下,你不需要把它也放在expose下。这是由Docker自动完成的。