Ошибка тайм-аута при подключении к Atlas mongoDB из контейнера - PullRequest
0 голосов
/ 12 октября 2019

Мое приложение может подключаться к моему Atlas mongodb, когда я запускаю его на локальном компьютере без контейнера.

Когда я помещаю свое приложение в контейнер, я не могу получить доступ к Atlas mongodb.

Я внес в белый список все IP-адреса.

        self.myclient = pymongo.MongoClient(mongodb+srv://admin:<password>@mongodbscrapperconf-lctzq.gcp.mongodb.net/test?retryWrites=true&w=majority&ssl=true&authSource=admin)

Я пытался одновременно подключиться к моей локальной базе данных Atlas с моим контейнером и запустить мой контейнер в GCP. В обоих случаях я получаю сообщение об ошибке тайм-аута от mongoDB.

Мой DockerFile выглядит как

FROM python:3.7
COPY . /app
WORKDIR /app
RUN apt-get update && apt-get install ca-certificates && rm -rf /var/cache/apk/*
COPY ./host.crt /usr/local/share/ca-certificates
RUN update-ca-certificates
RUN pip install -r requirements.txt
EXPOSE 8000
CMD python ./controller.py cloud

needs.txt

iso4217
validators
pymongo
pymongo[srv]
flask
lxml
flask-cors
configparser

ОБНОВЛЕНО: я обнаружил, чтосоединение зашифровано, и соединение должно принимать сертификаты SSL. Я пробовал это, но Atlas все еще отказывается от соединения.

1 Ответ

0 голосов
/ 15 октября 2019

Я решаю эту проблему, добавив

pymongo[tls,srv]

в файл needs.txt

Это результирующий файл require.txt

iso4217
validators
pymongo[tls,srv]
flask
lxml
flask-cors
configparser
...