Как получить доступ к серверу MongoDB Atlas из контейнера Flask Docker? - PullRequest
0 голосов
/ 06 октября 2019

Я докертизировал свое приложение 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 консоль доступа к сети

enter image description here

Но совершенно очевидно, что это не сработает.

Как я могу это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...