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