为什么“网络助推器”工具要求节点数据库(配置的PostgreSQL)实例启动并运行?

时间:2018-08-10 06:12:14

标签: corda

我们的示例CorDapp被配置为使用PostgreSQL作为独立的节点数据库。 网络引导程序工具用于在开发人员模式下创建节点配置。

  1. 据我了解,网络boosterapper工具会生成节点配置文件。 但是,我们注意到它要求PostgreSQL实例启动并运行(已创建模式)。 该工具在生成节点配置文件时确实连接到数据库。

    为什么它连接到数据库?我认为应该在最初的网络升级之后允许创建数据库。

  2. 在我们的例子中,我们将PostgreSQL部署为docker容器。容器和网络增强工具都位于同一主机上。 如讨论的那样,网络Boostrapper工具尝试与节点数据库连接(基于node.conf中配置的数据源url)。 但是,它希望Postgres公开公开端口5432。

    即 此设置不起作用。 “ pg_party_a”是我们的docker容器的名称。

    dataSourceProperties = {
        dataSourceClassName = "org.postgresql.ds.PGSimpleDataSource"
        "dataSource.url" = "jdbc:postgresql://pg_party_a:5432/postgres"
        "dataSource.user" = postgres
        "dataSource.password" = postgres
    }
    

    此设置有效。

    dataSourceProperties = {
        dataSourceClassName = "org.postgresql.ds.PGSimpleDataSource"
        "dataSource.url" = "jdbc:postgresql://localhost:5432/postgres"
        "dataSource.user" = postgres
        "dataSource.password" = postgres
    }
    

    Corda节点能够使用容器名称连接数据库。但是引导工具不支持它。

    在我们的PoC应用程序中,Corda Node和PostgreSQL数据库都将驻留在同一主机上。因此,无需公开公开PostgreSQL。然而,由于网络助推器,这似乎很困难。还有其他方法可以解决这种情况吗?

1 个答案:

答案 0 :(得分:1)

从Corda 3.2开始,为什么在引导过程中需要数据库访问?

  • 作为引导的一部分,该节点需要生成其NodeInfo才能发送给其他网络节点
  • 该节点必须启动才能生成其NodeInfo
  • 启动后,该节点需要访问其数据库

现有的引导程序无法解决这个问题。