为了账号安全,请及时绑定邮箱和手机立即绑定

无法使用 pymongo 访问 dockerized MongoDB

无法使用 pymongo 访问 dockerized MongoDB

胡说叔叔 2023-07-18 16:50:41
我正在尝试使用与其交互的 python 应用程序运行数据库。我使用以下命令运行数据库docker-compose.yml:version: "3.8"services:    flask_app:        build: ./flask_app        container_name: flask_app        ports:            - "5000:5000"    mongo:        image: mongo:latest        container_name: mongodb        environment:            - MONGO_INITDB_ROOT_USERNAME=root            - MONGO_INITDB_ROOT_PASSWORD=pass        volumes:            - /data/db:/data/db    mongo-express:        image: mongo-express:latest        container_name: mongo_express        environment:            - ME_CONFIG_MONGODB_SERVER=mongo            - ME_CONFIG_MONGODB_PORT=27017            - ME_CONFIG_MONGODB_ENABLE_ADMIN=true            - ME_CONFIG_MONGODB_AUTH_DATABASE=admin            - ME_CONFIG_MONGODB_ADMINUSERNAME=root            - ME_CONFIG_MONGODB_ADMINPASSWORD=pass            # Uncomment if a secure login via browser is required            # - ME_CONFIG_BASICAUTH_USERNAME=root            # - ME_CONFIG_BASICAUTH_PASSWORD=pass        links:            - mongo        ports:            - 8081:8081我可以在localhost:8081访问数据库:pymongo考虑到/data/db卷从主机映射到容器,我希望使用 访问相同的数据库。然而,如下所示,我访问另一个数据库(一个带有“todos”、“test_db”和“db”但没有“config”的数据库)[如果这改变了某些内容,这个python在主机上运行,而不是在应用程序容器中运行]:In [1]: from pymongo import MongoClient; client = MongoClient(host='localhost', port=27017)In [2]: client.list_database_names()Out[2]: ['admin', 'local', 'db', 'todos', 'test_db']我在这里缺少什么?为什么有2个DB?
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

我们没有将27017容器的端口转发mongodb到localhost,因此没有应用程序在运行localhost:27017。


我们可以直接通过主机的 IP 地址访问容器,也可以创建一个从 docker 主机转发到容器的端口,这样我们就可以通过localhost:27017.


为了做到后者,我们修改添加一个ports部分到容器mongodb中docker-compose.yml:


version: "3.8"

services:

    ...

    mongo:

        image: mongo:latest

        container_name: mongodb

        ...

        ports:

            - 27017:27017

    ...


查看完整回答
反对 回复 2023-07-18
  • 1 回答
  • 0 关注
  • 92 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信