我有一个基于烧瓶的python代码,只需连接到mongodb.It有两条路线Get Post.得到简单的打印hello world并使用Post我们可以发布任何稍后保存在MongoDB中的json数据这个python代码工作正常. MongoDB托管在云上.
我现在创建了一个Dockerfile:
FROM tiangolo/uwsgi-Nginx-flask:python3.6-alpine3.7
RUN pip3 install pymongo
ENV LISTEN_PORT=8000
EXPOSE 8000
COPY /app /app
使用命令运行
docker run –rm -it -p 8000:8000 myflaskimage
启动此docker镜像的容器后,我收到了GET的响应但没有来自POST的响应.我正在使用Postman软件发布json数据.我得到以下错误:
pymongo.errors.ServerSelectionTimeoutError: No servers found yet
我有点困惑为什么python代码工作正常,但当我把它放在docker和启动容器时,它会抛出错误.我们是否必须在Dockerfile中包含任何内容才能启用与MongoDB的连接.
请帮忙.谢谢
Python代码:
from flask import Flask,request
from pymongo import MongoClient
app = Flask(__name__)
def connect_db():
try:
client = MongoClient(
您可能没有来自容器的互联网连接.从容器化的Java应用程序连接到公共Web服务时,我遇到了类似的问题.
起初我会尝试重启docker:
systemctl restart docker
如果它没有帮助,那么请查看容器中的resolv.conf:
docker run --rm myflaskimage cat /etc/resolv.conf
如果它显示nameserver 127.x.x.x,那么你可以尝试:
1)在主机系统上使用#重启/etc/NetworkManager/NetworkManager.conf文件中的dns = dnsmasq行,并使用systemctl restart network-manager重新启动NetworkManager
2)或显式设置docker的DNS,将其添加到/etc/docker/daemon.json文件并重新启动docker:
{
"dns": ["my.dns.server"]
}