Hyperledger Iroha не подключается к базе данных postgres? - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь развернуть Hyperledger Iroha в среде Docker для запуска одного экземпляра в соответствии с рекомендациями, приведенными в разделе 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?

Но я проверил, работает ли сервер postgres в моей системе или нет, используя команду psql. Я могу подключиться к серверу postgres из командной строки с помощью команды psql.

Содержимое файла конфигурации 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

1 Ответ

0 голосов
/ 09 января 2019

Обратите внимание, что вы пытаетесь запустить узел Iroha внутри докер-контейнера, то есть внутри докерской сети.Экземпляр Postgres, запущенный на хост-компьютере, не будет доступен из док-контейнера.Я предлагаю вам запустить два док-контейнера: Postgres и Iroha.Они будут в одной сети, поэтому они будут видеть друг друга.

В приведенной выше ссылке есть инструкции для этого.

docker run --name some-postgres \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=mysecretpassword \
-p 5432:5432 \
--network=iroha-network \
-d postgres:9.5
И не забудьте сменить хост postgres вваш конфигурационный файл
...