Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 从另一个容器访问Neo4J_Docker_Go_Neo4j_Containers - Fatal编程技术网

Docker 从另一个容器访问Neo4J

Docker 从另一个容器访问Neo4J,docker,go,neo4j,containers,Docker,Go,Neo4j,Containers,我正在docker容器中运行neo4j图形数据库。我已经在Go中编写了另一个服务,它应该能够从其各自的容器中执行查询。然而,我无法建立这两个容器之间的连接 我的数据库的dockerfile: version: "3" services: neo4j-db: image: neo4j:latest ports: - "7474:7474" - "7473:7473" - "7687:7687" expose: - 7474

我正在docker容器中运行neo4j图形数据库。我已经在Go中编写了另一个服务,它应该能够从其各自的容器中执行查询。然而,我无法建立这两个容器之间的连接

我的数据库的
dockerfile

version: "3"
services:
  neo4j-db:
    image: neo4j:latest
    ports:
      - "7474:7474"
      - "7473:7473"
      - "7687:7687"
    expose:
      - 7474
    networks:
      app_net:
        ipv4_address: 172.18.18.10
    volumes:
      - //C/Users/<user>/Desktop/neoj4/4.0/config:/conf
networks:
  app_net:
    driver: bridge
    driver_opts:
      com.docker.network.enable_ipv6: "false"
    ipam:
      driver: default
      config:
        - subnet: 172.18.18.0/24
最后,在我的Go容器中:

 uri := "bolt://127.18.18.10:7687"
    username := "neo4j"
    password := "test" 
    var (
        err      error
        driver   neo4j.Driver
        session  neo4j.Session
        result   neo4j.Result
        greeting interface{}
    )
    fmt.Println("Connecting to Neo4j")
    driver, err = neo4j.NewDriver(uri, neo4j.BasicAuth(username, password, ""), useConsoleLogger(neo4j.ERROR))
    if err != nil {
        fmt.Println("ERROR:" , err)
    }
    defer driver.Close()

    fmt.Println("Getting Session")

    session, err = driver.Session(neo4j.AccessModeWrite)
    if err != nil {
        fmt.Println("ERROR:" , err)
    }
    defer session.Close()
调用函数时,执行会在
fmt.Println(“Getting Session”)
之后停滞30秒,不会抛出任何错误,然后简单地终止

我还确保两个容器都在同一个网络上(
app\u net
)。我可以在两个容器之间自由移动。但是,尝试从go容器到neo4j的telnet会导致
无法连接到远程主机:连接被拒绝

我不确定我做错了什么。neo4j上的浏览器访问功能正常,从我看到的情况来看,这些容器都在同一个网络上


非常感谢您的任何建议或想法。

在花了一些额外的时间之后,我已经设法让它工作起来了。我采取了以下步骤:

  • 将容器的主机名用作
    uri
    (即
    )bolt://container_name“
  • 删除加密以防止TLS错误:

  • 在花了一些额外的时间后,我设法使它工作起来。我采取了以下步骤:

  • 将容器的主机名用作
    uri
    (即
    )bolt://container_name“
  • 删除加密以防止TLS错误:
  •  uri := "bolt://127.18.18.10:7687"
        username := "neo4j"
        password := "test" 
        var (
            err      error
            driver   neo4j.Driver
            session  neo4j.Session
            result   neo4j.Result
            greeting interface{}
        )
        fmt.Println("Connecting to Neo4j")
        driver, err = neo4j.NewDriver(uri, neo4j.BasicAuth(username, password, ""), useConsoleLogger(neo4j.ERROR))
        if err != nil {
            fmt.Println("ERROR:" , err)
        }
        defer driver.Close()
    
        fmt.Println("Getting Session")
    
        session, err = driver.Session(neo4j.AccessModeWrite)
        if err != nil {
            fmt.Println("ERROR:" , err)
        }
        defer session.Close()
    
      if driver, err = neo4j.NewDriver(uri, neo4j.BasicAuth(username, password, ""), func(config *neo4j.Config) {
        config.Log = neo4j.ConsoleLogger(neo4j.ERROR)
        config.Encrypted = false
      }); err != nil {
        return err
      }
      defer driver.Close()