Чтобы подключиться к Hyperledger Indy из любой точки мира, как вы, возможно, уже знаете, вам нужен файл genesis. Файл Genesis определяет IP-адреса сетевых узлов и связанные с ними криптографические данные c (подписи, публичные c ключи ...).
При создании Indy pool docker с командой после публикации docker build --build-arg pool_ip=172.31.37.144 -f ci/indy-pool.dockerfile -t indy_pool
важно указать правильное pool_ip
. pool_ip
станет частью файла генезиса. И когда вы предоставляете файл genesis для indySDK, он возьмет эти IP-адреса и попытается установить с ними sh соединение. Если вы получаете сообщение об ошибке, например PoolTimeout
, скорее всего, эти IP-адреса недоступны из среды, в которой вы запускаете IndySDK.
Итак, создавая изображение, как указано выше, вы говорите: « Клиенты, подключающиеся к контейнеру, сделанному из этого изображения, должны иметь возможность добраться до контейнера по адресу 172.31.37.144
». Это может сработать, если вы пытаетесь подключиться к пулу из другого контейнера docker в той же сети. Но если приложение работает на вашем локальном хосте, 172.31.37.144
не будет подключаться никуда, поскольку это только внутренний IP-адрес в сети docker.
Как я понял, вы хотите запустить сеть Indy в пуле и подключиться к пулу из приложения, запущенного на вашем хосте. Самый простой способ - сделать сеть доступной на вашем локальном хосте / 127.0.0.1
, открыв порты. Давайте сначала создадим сетевой контейнер indy, который будет иметь 127.0.0.1
в своих транзакциях Genesis.
docker build --build-arg pool_ip=127.0.0.1 -f ci/indy-pool.dockerfile -t indy_pool
Теперь давайте прочитаем файл Genesis вашего изображения и сохраним его локально.
docker exec indy_pool cat '/var/lib/indy/sandbox/pool_transactions_genesis' > ~/my_genesis.txn
Далее вы запустите пул так же, как вы это делали, но не нужно указывать внутренний IP-адрес контейнера - это не имеет значения.
docker run -itd -p 9701-9708:9701-9708 -t indy_pool
Теперь, когда вы запускаете приложение и пытаетесь подключиться к пулу, вам нужно будет указать путь к файлу genesis, который мы создали на вашем локальном хосте.