我正在尝试通过 docker 安装 bitfeed 并将其连接到在同一主机上运行的比特币核心(在裸机上;在 docker 之外)。
无论我尝试什么,bitfeed 的“api”容器在尝试连接到比特币 RPC 时都会给我“连接被拒绝”的错误,我正在尝试弄清楚如何允许 RPC 从 docker 连接到主机。下面是我的比特币配置以及我试图与比特币对话的应用程序的 docker-compose——以及对每一个的更多评论。
任何帮助将不胜感激!
这是我的
bitcoin.conf
。起点是 Raspibolt 指南 的副本。正如你所看到的,我的“rpcallow...”有点乱,因为我一直在尝试添加越来越多的东西来让它工作!
# RaspiBolt: bitcoind configuration
# /home/bitcoin/.bitcoin/bitcoin.conf
# Bitcoin daemon
server=1
txindex=1
# Network
listen=1
listenonion=1
proxy=127.0.0.1:9050
bind=127.0.0.1
# Connections
rpcport=8332
rpcbind=127.0.0.1
rpcallowip=127.0.0.1
rpcallowip=192.168.50.11 #trying the machine's IP address
rpcallowip=172.17.0.1/16 #the IP range for my docker0 network interface
rpcallowip=172.18.0.1/16 #the IP range for the bitfeed_default docker network
rpcauth=[user:passwordhash]
zmqpubrawblock=tcp://127.0.0.1:28332
zmqpubrawtx=tcp://127.0.0.1:28333
zmqpubsequence=tcp://127.0.0.1:28334
[email protected] # for Electrs
# Raspberry Pi optimizations
maxconnections=40
maxuploadtarget=5000
# Initial block download optimizations
#dbcache=2000
#blocksonly=1
这是我的
docker-compose.yml
bitfeed。请注意 network_mode: host
是如何被注释掉的。当我在主机模式下运行这个堆栈时,我确实能够在 8332 上连接到比特币的 RPC 服务......但是当我让 docker 处理网络时我无法让它工作,这是更可取的,因为我想保留比特币核心与尽可能多的其他东西隔离开来。
version: "2.1"
services:
web:
image: ghcr.io/bitfeed-project/bitfeed-client:v2.3.4
restart: on-failure
stop_grace_period: 1m
depends_on:
- 'api'
environment:
TARGET: 'docker'
BACKEND_HOST: 'api'
BACKEND_PORT: '6000'
expose:
- '3080:80'
api:
image: ghcr.io/bitfeed-project/bitfeed-server:v2.3.4
user: '1001:1001'
restart: on-failure
stop_grace_period: 1m
volumes:
- '/home/bitcoin/.bitcoin:/bitcoin:ro'
extra_hosts:
- 'host.docker.internal:host-gateway'
#network_mode: host
environment:
PORT: '6000'
BITCOIN_HOST: 'host.docker.internal'
BITCOIN_ZMQ_RAWBLOCK_PORT: '28332'
BITCOIN_ZMQ_RAWTX_PORT: '28333'
BITCOIN_ZMQ_SEQUENCE_PORT: '28334'
BITCOIN_RPC_PORT: '8332'
BITCOIN_RPC_COOKIE: /bitcoin/.cookie
尝试在主机网络模式下运行 bitfeed 堆栈,这确实有效,但不是我的首选设置。
尝试谷歌搜索并为
bitcoin.conf
和ufw
添加各种规则,但我觉得我在一遍又一遍地尝试同样的东西,所以我要放弃了!
预期结果:bitfeed 应用程序的“api”容器成功连接到比特币 RPC 并同步内存池 实际结果:“api”容器抛出错误:尝试 RPC 连接时连接被拒绝