from web3 import Web3
web3 = Web3(Web3.IPCProvider("/Ethereum/geth.ipc"))
print(f'IPC connected: {web3.isConnected()}') # want to return True
У меня есть приведенный выше скрипт Dockerized, и я пытаюсь подключиться к geth.ipc
локальному хосту, и я не могу подключиться к нему.
Вот как я запускаю Docker:
docker run --mount type=bind,source=$HOME/Library/Ethereum,target=/Ethereum container1
Я проверил, что он geth.ipc
существует в /Ethereum
каталоге, но не могу подключиться к нему. Есть ли способ сделать это?
Вопрос может быть связан с этим , и вот мой первоначальный вопрос https://stackoverflow.com/questions/52715141/how-to-make-a-docker-container-talk-to-geth-on-local-host
Если вы смонтируете папку, содержащую файл IPC, а не файл напрямую, это будет работать.
Использоватьhost.docker.internal
Это работает в Docker для Mac и Docker для Windows.
Если вы работаете в Linux, все становится сложнее. Пожалуйста, взгляните на https://stackoverflow.com/questions/24319662/from-inside-of-a-docker-container-how-do-i-connect-to-the-localhost-of-the-mach .
geth.ipc представляет собой «сокет домена Unix».
В этой статье есть шаги по предоставлению отсоса сокета для контейнера докеров.
https://www.jujens.eu/posts/en/2017/Feb/15/docker-unix-socket/
Эрик