Python 如何在docker compose中使用mongoDB容器
我正在尝试使用docker compose连接我的所有服务。除mongoDB外,我的所有服务都已连接。这是我的docker-compose.yml: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
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建立一个名称,并在容器中运行服务应用程序。