Mongodb

如何將後端連接到 mongodb docker 容器

  • August 14, 2021

我在 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 連接到數據庫,但我無法從命令行使用mongo.

官方 docker hub 頁面

鏡像中的 MongoDB 伺服器偵聽標準 MongoDB 埠 27017,因此通過 Docker 網路連接將與連接到遠端 mongod 相同。

您沒有說明您從哪裡連接以及如何連接。如果它是另一個容器,那麼您可以直接使用該埠,否則您需要先公開它。

至於連接字元串,一般來自官方文件

mongo mongodb:// $ [hostlist]/ $

$$ database $$?authSource= $ [authSource] –username $ $$ username $$

您還可以使用mongo-express用於獲取上述詳細資訊的容器或從 docker hub README 獲取詳細資訊。所以在你的情況下:

mongodb://root:example@mongo:27017/

如果您的客戶端不在同一堆棧中的 docker 容器中,則需要從第一個mongodb容器中公開埠 27017:

ports:
   - "27017:27017"

引用自:https://serverfault.com/questions/1074576