一千萬個為什麽

搜索

docker微服務無法連接到比特幣碼頭


我有一個微服務 watchblockchain ,它在比特幣區塊鏈上發出請求。當我使用這兩種服務時,一切正常。 然後我想把這些服務放在docker容器中。 watchblockchain 無法與比特幣 docker進行通信。 我用docker image:kylemanna/bitcoind /

這是我的 bitcoin.conf 文件:

disablewallet=1
printtoconsole=1
rpcauth=jfjobidon:123...xyz
testnet=1
txindex=1
server=1
rpcport=8332

我可以在 bitcoin 容器中打開一個控制臺並驗證這些塊是否正在下載,我可以在區塊鏈上發出請求 例如:比特幣-cli getblockcount

watchblockchain 中,我有這個連接配置:

var clientBTC = new bitcoin.Client({
    host: 'bitcoin',
    port:  8332,
    user: 'jfjobidon',
    pass: 'Lw.....='
});

我在我的hosts文件中將 bitcoin 映射到127.0.0.1

我的 docker-compose.yml

version: "3"
services:
  watchblockchain:
    build: ./watchBlockchain
    depends_on:
      - redis
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
  redis:
    image: redis:4.0
    command: redis-server --appendonly yes
    ports:
      - "6379:6379"
    deploy:
      placement:
        constraints: [node.role == manager]
    command: redis-server --appendonly yes

當我啟動:docker-compose up時,我有以下錯誤:

錯誤:連接ECONNREFUSED 127.0.0.1:8332

我認為這是一個網絡通信問題。

如何使用 watchblockchain 服務與比特幣 docker進行通信?

最佳答案

容器 hosts 文件與主機 hosts 文件不同。

看起來有點像虛擬機。

127.0.0.1也是錯誤的地址,您可能需要配置主機具有的實際ip /主機名以及服務在watchblockchain容器內監聽的位置。

所以問題:

  • 您的docker容器對主機比特幣一無所知。 docker hosts /etc/hosts 中的條目不會改變它。

  • 也許您的比特幣服務只綁定到localhost 127.0.0.1 - 這也會阻止任何docker容器連接到它。也許你可以配置它以便它綁定到docker網橋IP。因此,只有所有docker容器都能夠連接到它。

  • 如果您的bitcoind也是一個docker容器並且在 docker-compose.yml 中配置,那將會更容易。這樣您就可以使用容器名稱來解析主機。但是仍然應該將你的bitcoind配置為在每個接口上綁定。

希望這可以幫助 ;)

轉載註明原文: docker微服務無法連接到比特幣碼頭

猜你喜歡