我正在尝试使用与其交互的 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
...
添加回答
举报
0/150
提交
取消