Подключение к ZMQ из одного Docker в другой (допилить docker-compose)
Есть два докер контейнера и из одного нужно подключится к другому.
Примерное содержание docker-compose.yml
version: '3'services:
php:
build:
context: services/php
dockerfile: Dockerfile
volumes:
- ./src:/var/www/html
ports:
- "9000:9000"
bitcoin:
depends_on:
- php
build:
context: services/bitcoin
dockerfile: Dockerfile
volumes:
- ./services/bitcoin/data:/data/.bitcoin
- ./services/bitcoin/bitcoin.conf:/data/.bitcoin/bitcoin.conf
ports:
- "8332"
command:
-rpcallowip=0.0.0.0/0
-rpcbind=0.0.0.0
-disablewallet
-zmqpubhashtx=tcp://127.0.0.1:7777
-zmqpubhashblock=tcp://127.0.0.1:7777
-zmqpubrawblock=tcp://127.0.0.1:7777
-zmqpubrawtx=tcp://127.0.0.1:7777
-zmqpubsequence=tcp://127.0.0.1:7777
Условный код из контейнера php:
use React\EventLoop\Loop;use React\ZMQ\Context;
include "vendor/autoload.php";
$loop = Loop::get();
$context = new Context($loop);
$socket = $context->getSocket(ZMQ::SOCKET_SUB);
$socket->setSockOpt(ZMQ::SOCKOPT_RCVHWM, 0);
$socket->bind('tcp://127.0.0.1:7777');
$socket->subscribe('hashblock');
$socket->subscribe('hashtx');
$socket->subscribe('rawblock');
$socket->subscribe('rawtx');
$socket->subscribe('sequence');
$socket->on('messages', function ($msg){
$topic = $msg[0];
echo $topic;
});
$loop->run();
Скорее всего решается дополнительным описанием docker-compose файла.