Vas*_*tos 5 mongodb pymongo flask docker
我已经使用一些 html 模板为 Flask 应用程序构建了一个 docker 映像,在运行我的映像后,我进入了localhost:5000Flask 应用程序的起始页面。我按下注册按钮来使用烧瓶端点注册用户,但我得到
pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused
Run Code Online (Sandbox Code Playgroud)
在转到 localhost 之前,我运行 mongodb 映像sudo docker start mongodb,每当我必须在 monogdb 数据库中搜索端点时,连接似乎都会遇到此错误。我是否需要 docker-compose.yml 才能连接,没有 docker-compose.yml 就无法连接?
这就是我使用 pymongo 连接到 mongodb 的方式
client = MongoClient('mongodb://localhost:27017/')
db = client['MovieFlixDB']
users = db['Users']
movies = db['Movies']
Run Code Online (Sandbox Code Playgroud)
我如何运行我的烧瓶应用程序:
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
Run Code Online (Sandbox Code Playgroud)
我将不胜感激你的帮助。先感谢您
要将容器相互连接,您应该使用网络。
docker network create my-network
Run Code Online (Sandbox Code Playgroud)
docker container run -d --name mongodb -p 27017:27017 --network my-network mongodb:latest
Run Code Online (Sandbox Code Playgroud)
mongodb修改您的应用程序以作为主机而不是本地主机连接。连接到公共网络的容器可以使用它们的名称(DNS 名称)相互通信,这些名称可以自动解析为容器 IP。client = MongoClient('mongodb://mongodb:27017/')
Run Code Online (Sandbox Code Playgroud)
您还可以考虑通过环境变量提供此类详细信息(数据库主机、用户、密码)并在您的应用程序中读取它们。
docker container run --name flask-app -d --network my-network my-flaskapp-image
Run Code Online (Sandbox Code Playgroud)
您可以在 docker文档中阅读有关容器网络的更多信息。
| 归档时间: |
|
| 查看次数: |
3695 次 |
| 最近记录: |