Python 如何在docker compose中使用mongoDB容器

Python 如何在docker compose中使用mongoDB容器,python,mongodb,flask,docker-compose,Python,Mongodb,Flask,Docker Compose,我正在尝试使用docker compose连接我的所有服务。除mongoDB外,我的所有服务都已连接。这是我的docker-compose.yml: version: '2' services: user_service: build: ./user_service ports: - "83:83" links: - mongo depends_on: - mongo volumes: - .:/code m

我正在尝试使用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
在我的flask应用程序中,我尝试使用以下代码访问数据库:

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

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

在您的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)
参考文献

这可以通过使用mongodb链接容器预定义的环境变量来实现,该环境变量在链接到user_服务并在MongoClient中使用时变为可用


注意:对于特定版本的Mongodb容器链接,请检查用户服务容器可用的环境变量。

我以前尝试过,但没有成功。我使用docker ip地址修改了答案看看这是版本3的最新版本吗?你的flask应用程序是用户服务吗?如果在本地运行flask app,则需要从容器中公开mongodb,并连接到容器ip地址。如果在
user\u服务中运行flask
,请尝试为mongo建立一个名称,并在容器中运行服务应用程序。