【问题标题】:Cannot connect to mongo docker from another docker无法从另一个 docker 连接到 mongo docker
【发布时间】:2019-03-11 12:44:37
【问题描述】:

查看 thisthisthis 后,我无法从另一个 docker 连接到 mongo。 这是我的 DockerFile 的一部分:

FROM ubuntu:16.04

...
WORKDIR /code

# Install project requirements
RUN pip3 install -r requirements.pip

ADD . /code
ENTRYPOINT ["/usr/bin/supervisord", "-c", "/code/supervisord.conf"]

在我的电报服务中,我像这样连接到 mongo:

register_connection(
        alias='main',
        name='new_tetabot',
        host='mongo',
        port=27017
    )

这是我的 docker-compose.yml 文件:

version: '3'
services:
  telegram:
    hostname: nh-11
    build: .
    ports:
     - "9001:9001"
     - "5555:5555"
    extra_hosts:
      postgresql: 127.0.0.1
      mongo: 127.0.0.1
      redis: 127.0.0.1
      es: 127.0.0.1
      broker: 127.0.0.1
    volumes:
      - /root/telegram_logs:/root/telegram_logs
      - /home/crawler/telegram/sessions:/root/crawler/telegram/sessions
      - /root/downloads:/root/downloads
      - /root/images:/root/images
    restart:
      always
    depends_on:
      - mongo
      - redis
    links:
      - mongo
      - redis
  redis:
    image: "redis:latest"
    ports:
      - "6379:6379"
    expose:
      - "6379"
  mongo:
    image: "mongo:4"
    ports:
      - "27017:27017"
    expose:
      - "27017"

当我使用docker-compose up 时,我得到Failed to connect to mongo port 27017: Connection refused。但我有从 localhost(docker 外部)到端口 27017 上的 127.0.0.1 的 telnet。 我的 docker-compose 版本是 docker-compose version 1.23.2, build 1110ad01,当我运行 docker-compose up 时,docker ps 的结果是

CONTAINER ID        IMAGE               COMMAND                   CREATED             STATUS                          PORTS                      NAMES
dfa23e7d07dd        telegram_telegram   "/bin/sh -c 'curl \"m…"   2 minutes ago       Restarting (7) 11 seconds ago                              telegram_telegram_1
74d875f3828c        mongo:4             "docker-entrypoint.s…"    2 minutes ago       Up 2 minutes                    0.0.0.0:27017->27017/tcp   telegram_mongo_1
6ee448c1cc30        redis:latest        "docker-entrypoint.s…"    2 minutes ago       Up 2 minutes                    0.0.0.0:6379->6379/tcp     telegram_redis_1

【问题讨论】:

  • 您的mongo 正在运行,您的连接在哪里?在 docker 服务内部(电报)?
  • @ŞivāSankĂr 我已经更新了我的问题。当我执行supervisor 时,我正在电报服务中连接到 mongo 服务器
  • 您无法使用localhost从不同的服务连接,请尝试使用172.17.0.1
  • @ŞivāSankĂr 我试过了。没用

标签: mongodb docker docker-compose


【解决方案1】:

使用links 时,您需要从docker-compose.yml 中删除extra_hosts。电报容器无法解析mongo 的正确地址,因为它已被覆盖为127.0.0.1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-31
    • 2020-12-27
    • 2018-09-02
    • 2020-01-30
    • 2021-11-21
    • 2019-09-04
    • 2022-01-04
    • 1970-01-01
    相关资源
    最近更新 更多