Hyperledger Iroha 未连接到 postgres 数据库?
Hyperledger Iroha not connecting to postgres database?
我正在尝试在 Docker 环境中为 运行 单个实例部署 Hyperledger Iroha,按照
5.3.1 部分给出的指南
https://iroha.readthedocs.io/en/latest/guides/deployment.html#running-single-instance
但是,我遇到了以下错误。
NOTE: IROHA_POSTGRES_HOST should match 'host' option in config file
wait-for-it.sh: waiting 30 seconds for 127.0.0.1:5432
wait-for-it.sh: timeout occurred after waiting 30 seconds for 127.0.0.1:5432
[2019-01-02 11:33:20.406202853][th:80][info] MAIN start
[2019-01-02 11:33:20.406373949][th:80][info] MAIN config initialized
[2019-01-02 11:33:20.407157701][th:80][info] IROHAD created
[2019-01-02 11:33:20.407215609][th:80][info] StorageImpl:initConnection Start st
[2019-01-02 11:33:20.407363960][th:80][info] StorageImpl:initConnection block st
terminate called after throwing an instance of 'soci::soci_error'
what(): Cannot establish connection to the database.
could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 5432?
但我使用 psql 命令测试了 postgres 服务器是否在我的系统中 运行。我可以使用 psql 命令从命令提示符连接到 postgres 服务器。
iroha配置文件内容如下
{
"block_storage_path":"/tmp/block_store",
"torii_port" : 50051,
"internal_port" : 10001,
"pg_opt" : "host=127.0.0.1 port=5432 user=postgres password=abc123",
"max_proposal_size" : 10,
"proposal_delay" : 5000,
"vote_delay" : 5000,
"mst_enable" : false
}
我用于 运行 iroha daemon 的命令如下。
iroha$ sudo docker run --name iroha2 -p 50051:50051 -v /home/user/iroha/example:/opt/iroha_data -v blockstore:/tmp/block_store -e IROHA_POSTGRES_HOST='127.0.0.1' -e POSTGRES_PORT='5432' -e POSTGRES_PASSWORD='abc123' -e POSTGRES_USER='postgres' -e KEY=node0 --network=iroha-network hyperledger/iroha:latest
请注意,您正在尝试 运行 Iroha 节点在 docker 容器内,因此在 docker 网络内。无法从 docker 容器访问主机上的 Postgres 实例 运行ning。
我建议您 运行 宁两个 docker 容器:Postgres 和 Iroha。他们将在同一个网络中,因此他们会看到对方。
在您上面提供的 link 中,有相关说明。
docker run --name some-postgres \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=mysecretpassword \
-p 5432:5432 \
--network=iroha-network \
-d postgres:9.5
并且不要忘记在配置文件中更改 postgres 主机
我正在尝试在 Docker 环境中为 运行 单个实例部署 Hyperledger Iroha,按照
5.3.1 部分给出的指南https://iroha.readthedocs.io/en/latest/guides/deployment.html#running-single-instance
但是,我遇到了以下错误。
NOTE: IROHA_POSTGRES_HOST should match 'host' option in config file
wait-for-it.sh: waiting 30 seconds for 127.0.0.1:5432
wait-for-it.sh: timeout occurred after waiting 30 seconds for 127.0.0.1:5432
[2019-01-02 11:33:20.406202853][th:80][info] MAIN start
[2019-01-02 11:33:20.406373949][th:80][info] MAIN config initialized
[2019-01-02 11:33:20.407157701][th:80][info] IROHAD created
[2019-01-02 11:33:20.407215609][th:80][info] StorageImpl:initConnection Start st
[2019-01-02 11:33:20.407363960][th:80][info] StorageImpl:initConnection block st
terminate called after throwing an instance of 'soci::soci_error'
what(): Cannot establish connection to the database.
could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 5432?
但我使用 psql 命令测试了 postgres 服务器是否在我的系统中 运行。我可以使用 psql 命令从命令提示符连接到 postgres 服务器。
iroha配置文件内容如下
{
"block_storage_path":"/tmp/block_store",
"torii_port" : 50051,
"internal_port" : 10001,
"pg_opt" : "host=127.0.0.1 port=5432 user=postgres password=abc123",
"max_proposal_size" : 10,
"proposal_delay" : 5000,
"vote_delay" : 5000,
"mst_enable" : false
}
我用于 运行 iroha daemon 的命令如下。
iroha$ sudo docker run --name iroha2 -p 50051:50051 -v /home/user/iroha/example:/opt/iroha_data -v blockstore:/tmp/block_store -e IROHA_POSTGRES_HOST='127.0.0.1' -e POSTGRES_PORT='5432' -e POSTGRES_PASSWORD='abc123' -e POSTGRES_USER='postgres' -e KEY=node0 --network=iroha-network hyperledger/iroha:latest
请注意,您正在尝试 运行 Iroha 节点在 docker 容器内,因此在 docker 网络内。无法从 docker 容器访问主机上的 Postgres 实例 运行ning。 我建议您 运行 宁两个 docker 容器:Postgres 和 Iroha。他们将在同一个网络中,因此他们会看到对方。
在您上面提供的 link 中,有相关说明。
docker run --name some-postgres \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=mysecretpassword \
-p 5432:5432 \
--network=iroha-network \
-d postgres:9.5
并且不要忘记在配置文件中更改 postgres 主机