连接两个容器MongoDB + Python项目

问题描述 投票:0回答:2

我正在尝试连接两个容器,其中一个正在使用 pymongo,我想从一个容器内部连接到第二个容器,我可以从运行 docker 的机器连接到它,但是我无法从一个容器连接到另一个容器,我已经尝试了所有可能的解决方案,但我确信我错过了一些东西:

docker-compose.yaml

version: "3"
networks:
  shared:
    driver: bridge

services:
  application:
    environment:
      ....
    image: application:latest
    ports:
      ....
    volumes:
      ....
    depends_on:
        - mongo
    networks:
      - shared
  mongo:
    image: mongo:4.2-bionic
    ports:
        - "27017:27017"
    networks:
    - shared

连接:

def get_connection():
    client = MongoClient('localhost', 27017)
    database = client.database.beacons
    return database

错误:

Connection refused, Timeout: 30s, Topology Description: <TopologyDescription id: 621d188d8169b99b9cfc4c5e, topology_type: Unknown, servers: [<ServerDescription ('localhost', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('localhost:27017: [Errno 111] Connection refused')>]>
python mongodb docker docker-compose pymongo
2个回答
3
投票

docker-compose 网络中的容器通过其服务名称引用,因此在 pymongo 连接中使用:

client = MongoClient('mongo', 27017)

0
投票

有同样的问题, 虽然我的 Python 应用程序容器使用了一个简单的 Dockerfile, MongoDB 镜像取自 Docker 镜像。 在客户端创建行中将主机重命名为 MongoDB 容器的名称即可完成任务。

创建容器:

docker run -d --network statusmapnet -p 27017:27017 --name statusmap-mongodb mongo

docker run -d --network statusmapnet -p 5000:5000 --name statusmap statusmap-flask

服务器.py:

client = pymongo.MongoClient('statusmap-mongodb', 27017)
© www.soinside.com 2019 - 2024. All rights reserved.