0
votes

I'm using Corda Network Bootstrapper to setup a local Corda network using Docker, and trying to configure PostgreSQL as the database.

  • The partya_node.conf file read by Network Bootstrapper:
devMode=true
myLegalName="O=PartyA,L=Paris,C=FR"
p2pAddress="partya:10200"
rpcSettings {
  address="0.0.0.0:10201"
  adminAddress="0.0.0.0:10202"
}
dataSourceProperties = {
    dataSourceClassName = "org.postgresql.ds.PGSimpleDataSource"
    dataSource.url = "jdbc:postgresql://pg_partya:5432/db_partya"
    dataSource.user = "pg_user"
    dataSource.password = "pg_secret"
}
database = {
    transactionIsolationLevel = READ_COMMITTED
}
jarDirs=["shared/drivers"]
security {
  authService {
    dataSource {
      type=INMEMORY
      users=[
        {
          password=test
          permissions=[
            ALL
          ]
          user=user1
        }
      ]
    }
  }
}
sshd {
  port = 2222
}
  • shared/drivers dir contains postgresql-42.2.14.jar

  • When I run the network bootstrapper tool: java -jar corda-tools-network-bootstrapper-4.5.jar

I get the following error:

[ERROR] 15:51:24-0300 [main] internal.NodeStartupLogging. - Could not find the database driver class. Please add it to the drivers directory. [Error Code: database-missing-driver For further information, please go to https://docs.corda.net/docs/corda-os/4.5/error-codes.html] - Could not find the database driver class. Please add it to the 'drivers' folder. [errorCode=1oswgkz, moreInformationAt=https://errors.corda.net/OS/4.5/1oswgkz]
... still waiting. If this is taking longer than usual, check the node logs.

[EDIT] The JDBC driver is mapped as a volume in docker-compose:

    volumes:
      - ./partya_node.conf:/etc/corda/node.conf
      - ./partya/certificates:/opt/corda/certificates
      - ./partya/persistence:/opt/corda/persistence
      - ./partya/logs:/opt/corda/logs
      - ./shared/cordapps:/opt/corda/cordapps
      - ./shared/node-infos:/opt/corda/additional-node-infos
      - ./shared/network-parameters:/opt/corda/network-parameters
      - ./shared/drivers/postgresql-42.2.14.jar:/opt/corda/drivers/postgresql-42.2.14.jar

Is it possible to configure Corda Network Bootstrapper to point to a driver's dir?

1
Where did you include your cordapp?laplace

1 Answers

2
votes

I believe you haven't mounted the driver directory properly to the docker container, which may be the reason why the node is unable to find the driver.

You could mount the driver to /opt/corda/drivers directory on the Corda docker container, and point to it in the node.conf file using jarDirs=["opt/corda/drivers"].

The shared directory you are referring to I guess is the directory on your host machine which the docker container can't access till its mounted to a certain location in the docker container.

Update Based On Comment:

You need to update the driver directory path. The node.conf file gets copied to the individual node folder and the copied file is referred while running the bootstrapper. So you just need to update the jarDirs in node.conf to jarDirs=["../shared/drivers"], assuming the shared directory is in the same directory as the bootstrapper jar and the initial node.conf files.