Я запускаю частную тестовую сеть geth, и моя программа находится в докере. Каждый раз, когда я пытаюсь вызвать API, я получаю: нет ответа JSON RCP. Должен ли я запускать geth и на докере?
Что-то, что вы можете попробовать, это docker-compose с вашим приложением и встроенным образом докера geth .
Например
докер-compose.yml
version: '3'
services:
geth:
image: kunstmaan/ethereum-geth-testnet
ports:
- "8545:8545"
- "30303:30303"
stdin_open: true
tty: true
your_app:
build: ./
ports:
- "8080:8080"
(...)
Создайте образ
$ docker-compose -f docker-compose.yml build
Запустить его
$ docker-compose -f docker-compose.yml up
http://localhost:8545
?EXPOSE 8545
Я столкнулся с той же проблемой. У меня был веб-сервер, работающий в контейнере Docker, и узел Ethereum (для тестовой сети), работающий на моей машине. Казалось, что приложение в Docker не сможет подключиться к узлу за его пределами. Вот как я решил эту проблему, не запуская узел Geth внутри моего контейнера:
web3 = new Web3(new Web3.providers.HttpProvider("http://docker.for.mac.localhost:8545"));
Филидор