如何將後端連接到 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

蒙戈會怎麼樣?

PS:我可以在網頁瀏覽器中透過 http://localhost:8081 連接到資料庫,但無法使用mongo.

答案1

來自官方 docker 中心頁面

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

相關內容