繁体   English   中英

MongoDB Docker Flask ZC5FD214CDD0D2B3B42272E73B022BA 容器上的连接被拒绝

[英]Connection Refused on MongoDB Docker Container from Flask Docker Container

我有两个 docker 容器。

  • Flask 应用程序
  • MongoDB

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM