我按照 docker hub / mongodb 上的说明制作了这个 docker-compose 文件,然后使用标准的命令docker-compose up -d
来启动容器。
# Use root/example as user/password credentials
version: '3.1'
services:
mongo:
image: mongo
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example
mongo-express:
image: mongo-express
restart: always
ports:
- 8081:8081
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: root
ME_CONFIG_MONGODB_ADMINPASSWORD: example
ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/
bf4a595a508d mongo-express "tini -- /docker-ent…" About an hour ago Up About an hour 0.0.0.0:8081->8081/tcp, :::8081->8081/tcp intake-app_mongo-express_1
b5fcc2d2386d mongo "docker-entrypoint.s…" About an hour ago Up About an hour 27017/tcp intake-app_mongo_1
现在我正尝试将我的后端连接到它。
使用 postresql 将会是这样的
postgresql://root:example@localhost:8081/db_name
mongo 会是什么情况?
PS:我可以通过 http://localhost:8081 在 Web 浏览器中连接到数据库,但是无法使用 用命令行连接到数据库mongo
。
答案1
镜像中的 MongoDB 服务器监听标准 MongoDB 端口 27017,因此通过 Docker 网络连接与连接到远程 mongod 相同。
您没有说明从哪里连接以及如何连接。如果是另一个容器,那么您可以直接使用端口,否则您需要先将其公开。
至于连接字符串,它通常来自官方文档:
mongo mongodb://$[主机列表]/$[数据库]?authSource=$[authSource] --用户名 $[用户名]
您还可以使用mongo-express
用于获取上述详细信息的容器或从 docker hub README 获取详细信息。因此,对于您的情况:
mongodb://root:example@mongo:27017/
如果您的客户端不在同一堆栈中的 Docker 容器中,则需要从第一个mongodb
容器公开端口 27017:
ports:
- "27017:27017"