簡體   English   中英

無法從容器內部連接到在 docker 容器中運行的 mongodb 實例

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM