from web3 import Web3
web3 = Web3(Web3.IPCProvider("/Ethereum/geth.ipc"))
print(f'IPC connected: {web3.isConnected()}') # want to return True
Tengo el script anterior Dockerizado y estoy tratando de conectarme a geth.ipc
un host local y parece que no puedo conectarme.
Así es como ejecuto Docker:
docker run --mount type=bind,source=$HOME/Library/Ethereum,target=/Ethereum container1
He verificado que geth.ipc
existe en el /Ethereum
directorio pero parece que no puedo conectarme a él. ¿Hay una manera de hacerlo?
La pregunta podría estar relacionada con esto y aquí está mi pregunta original https://stackoverflow.com/questions/52715141/how-to-make-a-docker-container-talk-to-geth-on-local-host
Si monta la carpeta que contiene el archivo IPC en lugar del archivo directamente, funcionará.
Usarhost.docker.internal
Esto funciona en Docker para Mac y Docker para Windows.
Si estás en Linux, las cosas se vuelven más complejas. Eche un vistazo a https://stackoverflow.com/questions/24319662/from-inside-of-a-docker-container-how-do-i-connect-to-the-localhost-of-the-mach
geth.ipc representa un "Socket de Dominio Unix".
Este artículo tiene pasos para exponer suck a socket to docker container.
https://www.jujens.eu/posts/es/2017/feb/15/docker-unix-socket/
eric