我的 Flask Container 和 Ganache Container 之间没有连接
Posted
技术标签:
【中文标题】我的 Flask Container 和 Ganache Container 之间没有连接【英文标题】:No connection between my Flask Container and the Ganache Container 【发布时间】:2019-10-23 16:56:16 【问题描述】:我想将我的 Flask Docker 容器连接到 Ganache Docker 容器。 Ganache 容器可以正常工作。 我将 Flask 应用程序本地连接到 Ganache 容器,一切正常。但如果我使用我的 Flask 容器,应用程序将无法连接到 Ganache 容器。
我的 docker-compose 文件:
version: "3"
services:
app:
image: flask-api
build:
context: .
dockerfile: Dockerfile-flask-api
ports:
- '5000:5000'
volumes:
- ./app:/app
depends_on:
- blockchain
blockchain:
image: trufflesuite/ganache-cli:latest
ports:
- '8545:8545'
我的 Flask 应用程序的 Dockerfile:
FROM python:3.7
WORKDIR /test
ADD test /test
EXPOSE 5000
RUN pip install -r requirements.txt
ENTRYPOINT ["python", "app.py"]
使用以下命令,我在 Flask 应用程序中调用 Ganache 容器
web3 = Web3(HTTPProvider("http://0.0.0.0:8545"))
我通过 `docker-compose up.我收到以下错误消息
ConnectionError: HTTPConnectionPool(host='0.0.0.0', port=8545)
也许有人可以帮我解决这个问题。
非常感谢。
【问题讨论】:
【参考方案1】:改变:
web3 = Web3(HTTPProvider("http://0.0.0.0:8545"))
到:
web3 = Web3(HTTPProvider("http://blockchain:8545"))
当您从 compose 设置容器时,它们都连接到 compose 创建的默认网络。 blockchain
在这种情况下是 blockchain
容器的 DNS 名称,将自动解析为容器 IP。
【讨论】:
刚刚试过这个,得到以下错误信息HTTPConnectionPool(host='blockchain', port=8545): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f2ad64d0400>: Failed to establish a new connection: [Errno 111] Connection refused'))
您能从您的主机连接到blockchain
服务吗?
当我运行docker-compose up app blockchain
时,我再次收到错误消息。但如果我先运行 docker-compose up blockchain
然后运行 docker-compose up app
它就可以了。为什么会这样?
因为在app
容器尝试访问它之前,您的区块链容器可能尚未完全初始化以接受连接。而且,当您在指定服务名称的同时生成服务时,您可能会在足够长的时间间隔内执行此操作,以便在应用程序容器尝试访问它之前初始化区块链容器。检查this
非常感谢您的帮助。使用restart: always
我已经能够解决错误以上是关于我的 Flask Container 和 Ganache Container 之间没有连接的主要内容,如果未能解决你的问题,请参考以下文章