【问题标题】:How to use mongoDB container in docker compose with flask如何在 docker compose 中使用 mongoDB 容器和烧瓶
【发布时间】:2017-07-24 22:17:53
【问题描述】:

我正在尝试使用 docker compose 连接我的所有服务。除了 mongoDB,我的所有服务都已连接。这是我的 docker-compose.yml:

version: '2'
services:
  user_service:
    build: ./user_service
    ports:
     - "83:83"
    links:
     - mongo
    depends_on:
     - mongo
    volumes:
     - .:/code
  mongo:
    image: "mongo:latest"
    ports:
     - "27017:27017"
    command: mongod --port 27017

在我的烧瓶应用程序中,我尝试使用以下代码访问数据库:

mongo = MongoClient('mongo://mongo', 27017)
db = mongo['user-database']
users = db.users.find({})

这些代码行不起作用,因为我的 user_services 没有找到 mongoDB 服务。

【问题讨论】:

  • 你的烧瓶应用是user_service吗?如果你在本地运行flask app,那么你需要从容器中暴露mongodb,并连接到容器ip地址。如果你在user_service运行flask,尝试为mongo建立一个名字,并在容器中运行service应用。

标签: python mongodb flask docker-compose


【解决方案1】:

在您的 MongoClient 中将代码更改为以下代码

import os
from flask import Flask, redirect, url_for, request, render_template
from pymongo import MongoClient
mongo = MongoClient( os.environ['DB_PORT_27017_TCP_ADDR'],
            27017)

参考article

这可以使用 mongodb 链接容器预定义的环境变量来完成,该环境变量在链接到 user_service 并在 MongoClient 中使用时可用。

注意:检查您的 user_service 容器可用的环境变量,以获取链接的特定版本的 Mongodb 容器。

【讨论】:

  • 我之前试过这个,但是没有用。我使用docker ip地址
  • 修改答案看看
  • 这是版本 3 的最新版本吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-17
  • 1970-01-01
  • 2022-11-13
  • 1970-01-01
  • 2018-06-09
  • 2017-11-24
相关资源
最近更新 更多