当我在没有容器的本地应用程序上运行时,我的应用程序可以连接到我的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
requirements.txt
iso4217
validators
pymongo
pymongo[srv]
flask
lxml
flask-cors
configparser
已更新:我发现该连接已加密,并且该连接需要接受SSL证书。我已经尝试过了,但是Atlas仍然拒绝连接。
答案 0 :(得分:0)
我通过添加
解决了该问题pymongo[tls,srv]
到requirements.txt
这是最终的要求。txt
iso4217
validators
pymongo[tls,srv]
flask
lxml
flask-cors
configparser