Python 如何从Flask Docker容器访问MongoDB Atlas Service?
我对接了我的Python 如何从Flask Docker容器访问MongoDB Atlas Service?,python,mongodb,docker,flask,Python,Mongodb,Docker,Flask,我对接了我的React+Flask+Nginx应用程序,并在我工作的一个内部服务器中提供了它 我使用mongoatlas作为数据库,并使用Flask中的pymongo创建API 我的烧瓶应用程序的初始部分如下所示: from flask import Flask, render_template, request, jsonify from flask_cors import CORS from bson.objectid import ObjectId import pymongo impor
React
+Flask
+Nginx
应用程序,并在我工作的一个内部服务器中提供了它
我使用mongoatlas
作为数据库,并使用Flask
中的pymongo
创建API
我的烧瓶应用程序的初始部分如下所示:
from flask import Flask, render_template, request, jsonify
from flask_cors import CORS
from bson.objectid import ObjectId
import pymongo
import json
import ssh
import OpenSSL
import pprint
application = Flask(__name__)
cors = CORS(application)
client = pymongo.MongoClient("mongodb+srv://...")
db = pymongo.database.Database(client, '...')
col = pymongo.collection.Collection(db, '...')
# some parts are written as `...`
#Using ubuntu as our base
FROM ubuntu:latest
#Install commands in ubuntu, including pymongo for DB handling
RUN apt-get update -y
RUN apt-get install -y python3 python3-pip python3-dev build-essential
#Unsure of COPY command's purpose, but WORKDIR points to /backend
COPY . /backend
WORKDIR /backend/
RUN pip3 install --proxy <proxy_settings_for_my_workplace> -r requirements.txt
RUN python3 -m pip install --proxy <proxy_settings_for_my_workplace> pymongo[srv]
ENV HTTPS_PROXY=<proxy_settings_for_my_workplace>
ENV HTTP_PROXY=<proxy_settings_for_my_workplace>
#Run order for starting up the backend
ENTRYPOINT ["python3"]
CMD ["app.py"]
Flask
应用程序的Dockerfile
如下所示:
from flask import Flask, render_template, request, jsonify
from flask_cors import CORS
from bson.objectid import ObjectId
import pymongo
import json
import ssh
import OpenSSL
import pprint
application = Flask(__name__)
cors = CORS(application)
client = pymongo.MongoClient("mongodb+srv://...")
db = pymongo.database.Database(client, '...')
col = pymongo.collection.Collection(db, '...')
# some parts are written as `...`
#Using ubuntu as our base
FROM ubuntu:latest
#Install commands in ubuntu, including pymongo for DB handling
RUN apt-get update -y
RUN apt-get install -y python3 python3-pip python3-dev build-essential
#Unsure of COPY command's purpose, but WORKDIR points to /backend
COPY . /backend
WORKDIR /backend/
RUN pip3 install --proxy <proxy_settings_for_my_workplace> -r requirements.txt
RUN python3 -m pip install --proxy <proxy_settings_for_my_workplace> pymongo[srv]
ENV HTTPS_PROXY=<proxy_settings_for_my_workplace>
ENV HTTP_PROXY=<proxy_settings_for_my_workplace>
#Run order for starting up the backend
ENTRYPOINT ["python3"]
CMD ["app.py"]
使用ubuntu作为我们的基础
来自ubuntu:最新版本
#在ubuntu中安装命令,包括用于DB处理的pymongo
运行apt获取更新-y
运行apt get install-y python3 python3 pip python3 dev build-sential
#不确定COPY命令的用途,但WORKDIR指向/backend
抄袭/后端
WORKDIR/后端/
运行pip3安装--proxy-r requirements.txt
运行python3-mpip安装——代理pymongo[srv]
环境HTTPS_代理=
ENV HTTP_代理=
#运行启动后端的命令
入口点[“蟒蛇3”]
CMD[“app.py”]
一切都很好地建立起来了。但是,在它启动后,我可以很好地访问前端部件,但我后端的日志显示一个错误,显示:
pymongo.errors.ServerSelectionTimeoutError:.mongodb.net:27017:超时,.mongodb.net:27017:超时,.mongodb.net:27017:超时
我假设这不起作用,因为我无法使用pymongo
通过Flask访问Mongo Atlas
,我试图将Flask映像的IP添加到Mongo Atlas
的网络访问控制台
但很明显,这是行不通的
我如何解决这个问题?你的Mongo Atlas在哪里?我使用的是云服务:你需要将你的作品的互联网网关IP白名单,而不是docker端的任何内容。