加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

python-3.x – Docker容器无法连接到远程MongoDB

发布时间:2020-12-16 03:37:58 所属栏目:安全 来源:网络整理
导读:我有一个基于烧瓶的python代码,只需连接到mongodb.It有两条路线Get Post.得到简单的打印hello world并使用Post我们可以发布任何稍后保存在MongoDB中的json数据这个python代码工作正常. MongoDB托管在云上. 我现在创建了一个Dockerfile: FROM tiangolo/uwsgi

我有一个基于烧瓶的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"]
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读