簡體   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