如何将后端连接到 mongodb docker 容器

如何将后端连接到 mongodb docker 容器

我按照 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

来自官方 docker hub 页面

镜像中的 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"

相关内容