from web3 import Web3
web3 = Web3(Web3.IPCProvider("/Ethereum/geth.ipc"))
print(f'IPC connected: {web3.isConnected()}') # want to return True
Ich habe das obige Skript angedockt und versuche, eine Verbindung zu einem geth.ipc
lokalen Host herzustellen, und ich kann anscheinend keine Verbindung herstellen.
So führe ich Docker aus:
docker run --mount type=bind,source=$HOME/Library/Ethereum,target=/Ethereum container1
Ich habe überprüft, dass geth.ipc
es im /Ethereum
Verzeichnis existiert, kann aber anscheinend keine Verbindung herstellen. Gibt es eine Möglichkeit, es zu tun?
Die Frage könnte damit zusammenhängen und hier ist meine ursprüngliche Frage https://stackoverflow.com/questions/52715141/how-to-make-a-docker-container-talk-to-geth-on-local-host
Wenn Sie den Ordner mit der IPC-Datei statt der Datei direkt mounten, funktioniert es.
Verwendenhost.docker.internal
Dies funktioniert auf Docker für Mac und Docker für Windows.
Wenn Sie Linux verwenden, werden die Dinge komplexer. Bitte werfen Sie einen Blick auf https://stackoverflow.com/questions/24319662/from-inside-of-a-docker-container-how-do-i-connect-to-the-localhost-of-the-mach
geth.ipc repräsentiert einen "Unix Domain Socket".
Dieser Artikel enthält Schritte zum Verfügbarmachen eines Sockets für den Docker-Container.
https://www.jujens.eu/posts/en/2017/Feb/15/docker-unix-socket/
Erich