[英]Unable to connect to the mongodb instance running in a docker container from outside
[英]Unable to connect to the mongodb instance running in a docker container from inside the container
我構建了一個由 mongodb 數據庫和 azure http 觸發函數組成的 docker 容器。 以下 yaml 是 docker compose 文件:
version: '3.4'
services:
mongo:
image: mongo
container_name: mongodb
restart: always
ports:
- 37017:27017
storage.emulator:
image: "mcr.microsoft.com/azure-storage/azurite:latest"
container_name: storage.emulator
ports:
- 20000:10000
- 20001:10001
- 20002:10002
my.functions:
image: ${DOCKER_REGISTRY-}myfunctions
build:
context: .
dockerfile: domain/My.Functions/Dockerfile
ports:
- 9080:80
depends_on:
- storage.emulator
- mongo
mongodb 實例運行良好,我能夠通過mongodb://localhost:37017
連接字符串從容器外部連接到它以播種一些數據。
容器內運行的 Azure 函數應該通過mongodb://localhost:27017
連接字符串與 mongodb 實例通信,但根據以下錯誤消息失敗:
"Unspecified/localhost:27017", ReasonChanged: "Heartbeat", State: "Disconnected", ServerVersion: , TopologyVersion: , Type: "Unknown", HeartbeatException: "MongoDB.Driver.MongoConnectionException: 打開與server.my.functions_1 | ---> System.Net.Sockets.SocketException (99): 無法分配請求的地址
我該如何解決這個問題? 為什么 mongodb 在同一容器內的 azure 函數內部不可用?
因為 docker 容器在它們自己的隔離網絡上運行。 因此,當您嘗試連接 localhost 時,實際上您正在嘗試連接 my.functions 應用程序,並且顯然它沒有在該部分運行服務。
您應該使用 docker-compose 服務名稱
mongodb://mongo:27017
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.