Dockerイメージalpineの方使わせてもらってます。ありがとうございます。
コンテナ内のbitzenydに対してホスト側からRPCを叩こうとしたらちょっとハマったので同じことやりたい人へのメモを残しておきます。
まず、READMEを参考に rpcport=9302 で立てると思うんですが、Dockerイメージのデフォルトではこのポートは空いていないので、起動時にオプションで渡す必要があります。
docker run ~~ -p 9302:9302 ~~
ホスト側からこんな感じで叩いてみて、
curl http://{rpcuser}:{rpcpassword}@127.0.0.1:{rpcport}/ --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getinfo", "params": [] }' -v
それらしいServerがレスポンスを返しているようであれば導通できています。
Server: bitzeny-json-rpc/vX.X.X
リクエストは通っているはずなのに 403 しか返ってこない現象は、rpcallowipの問題です。
最新のbitcoind(bitzenydじゃないよ)での同じ現象はサブネットマスクを設定しろとかアスタリスク表記は廃止されたとか色々回答されてて混乱するんですが、現行のbitzenydはベースが古いので全部通したいときは rpcalowid=*
で設定できます。
Dockerのホスト側からのみ通したいときは、docker inspect
とかで ゲートウェイのIPを調べてそいつを許可してやる必要があります。
(参考: https://bitcoin.stackexchange.com/questions/30462/json-rpc-call-to-bitcoind-error-403-failed-to-open-stream)
bitzeny 2.0.x プロジェクトが進むとまた状況が変わると思うのでバージョンに注意してご参考ください。