Я докертизировал свое приложение React
+ Flask
+ Nginx
и обслуживал его на своем внутреннем сервере.
Я использовал Mongo Atlas
в качестве базы данных и использовал pymongo
в Flask
для создания 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 `...`
Dockerfile
для приложения Flask
выглядит следующим образом:
#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"]
Все строится хорошои идет вверх. Тем не менее, после того, как он повышается, я могу получить доступ к части внешнего интерфейса, но в журналах для моего бэкенда появляется ошибка, которая говорит:
pymongo.errors.ServerSelectionTimeoutError: <cluster>.mongodb.net:27017: timed out,<cluster>.mongodb.net:27017: timed out,<cluster>.mongodb.net:27017: timed out
Я предполагаю, что это не работает, потому чтоЯ не могу получить доступ к Mongo Atlas
через Flask с помощью pymongo
Я попытался добавить IP-адрес IP-адреса образа Flask в Mongo Atlas
консоль доступа к сети
Но совершенно очевидно, что это не сработает.
Как я могу это исправить?