![](/img/trans.png)
[英]Connection refused by postgresql docker container when connecting via Flask docker container
[英]Connection Refused on MongoDB Docker Container from Flask Docker Container
我有两个 docker 容器。
Flask 应用程序有一个看起来像这样的 DockerFile。
from alpine:latest
RUN apk add --no-cache python3-dev \
&& pip3 install --upgrade pip
WORKDIR /app
COPY . /app
RUN pip3 --no-cache-dir install -r requirements.txt
EXPOSE 5000
ENTRYPOINT ["python3"]
CMD ["app.py"]
这就是我从 Flask 连接本地 Mongo(非容器)的方式
mongo_uri = "mongodb://host.docker.internal:27017/myDB"
appInstance.config["MONGO_URI"] = mongo_uri
mongo = PyMongo(appInstance)
MongoDB 在mongodb://0.0.0.0:2717/myDB
的容器上运行。
当我使用本地 mongo uri 运行 Flask 容器时,这一点很明显,即mongodb://host.docker.internal:27017/myDB
,一切正常。 但是当我尝试以同样的方式连接 Mongo Container 时它不应该工作。 因为 Flask 容器对那个 Mongo 容器一无所知。
我的问题是 - 如何将此 Mongo 容器与 Flask 容器连接,以便我可以从 Flask 容器中查询 Mongo 容器。
提前致谢。
如果我是你,我会使用docker-compose 。
仅使用 docker 的解决方案
您必须找出您的 mongo 容器的 IP 地址,并将此 IP 放入 flask 配置文件中。 请记住,容器的 IP 地址可能会更改 - 例如,如果您使用较新的图像。
找到IP地址:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id
使用docker-compose的解决方案
在您的 docker-compose 文件中,您将定义两项服务 - 一项用于 flask,一项用于 mongo。 在 flask 配置文件中,您可以使用其服务名称访问 mongo 容器,因为这两个服务都在同一网络中运行。
docker-compose.yml:
services: mongo: ... flask: ...
flask配置:
mongo_uri = "mongodb://mongo/myDB"
在此示例中, mongo
是您的 mongo 服务的名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.