gpt4 book ai didi

mongodb - 无法运行 docker flask image -pymongo.errors.ServerSelectionTimeoutError : localhost:27017: [Errno 111] Connection refused

转载 作者:行者123 更新时间:2023-12-02 20:35:33 25 4
gpt4 key购买 nike

我已经使用一些 html 模板为我拥有的 flask 应用程序构建了一个 docker 图像,在运行我的图像后,我转到 localhost:5000,这将我带到我的 flask 应用程序的起始页面。我按下注册按钮使用 flask 端点注册用户,但我得到了

pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused

在转到本地主机之前,我使用 sudo docker start mongodb 运行我的 mongodb 图像,每当我必须在我的 monogdb 数据库中搜索端点的内容时,连接似乎会遇到此错误。我是否需要 docker-compose.yml 才能连接,没有它我无法连接?

这就是我使用 pymongo 连接到 mongodb 的方式

client = MongoClient('mongodb://localhost:27017/')
db = client['MovieFlixDB']

users = db['Users']
movies = db['Movies']

我如何运行我的 flask 应用程序:

if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)

非常感谢您的帮助。提前谢谢你

最佳答案

要将容器相互连接,您应该使用网络。

  1. 首先创建一个网络
docker network create my-network
  1. 运行 mongodb specyfing 网络。
docker container run -d --name mongodb -p 27017:27017 --network my-network mongodb:latest
  1. 修改您的应用程序以作为主机而不是本地主机连接到 mongodb。连接到公共(public)网络的容器可以使用可自动解析为容器 IP 的名称(DNS 名称)相互通信。
client = MongoClient('mongodb://mongodb:27017/')

您还可以考虑通过环境变量提供此类细节(数据库主机、用户、密码)并在您的应用中读取它们。

  1. 使用您的应用重建镜像并运行
docker container run --name flask-app -d --network my-network my-flaskapp-image

您可以在 docker docs 中阅读有关容器网络的更多信息.

关于mongodb - 无法运行 docker flask image -pymongo.errors.ServerSelectionTimeoutError : localhost:27017: [Errno 111] Connection refused,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62619808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com