簡體   English   中英

pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] 連接被拒絕

[英]pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused

我正在嘗試將 docker-compose 與我的 django-rest 應用程序一起使用。 當我自己運行它時, python manage.py runserver它運行良好。

如果我嘗試使用 docker-compose sudo docker-compose up它也會運行服務器,但是當我在瀏覽器中打開頁面時出現錯誤。

pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused

我已經有 db,所以我只是在settings.py中使用這些行

MONGODB_DATABASES = {
    "default": {
        "name": 'api',
        "host": 'localhost',
       "port": 27017
    },
}

這是我的 Dockerfile:

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY . /code
RUN pip install -r requirements.txt

我的 docker-compose.yml:

version: '3.0'
services:
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
  mongo:
    image: mongo

已經嘗試過這個:

Pymongo 在 27017 一直拒絕連接

默認情況下,Compose 會為您的應用程序設置一個網絡。 服務的每個容器都加入默認網絡,並且可以被該網絡上的其他容器訪問,並且可以通過與容器名稱相同的主機名被它們發現。

根據docker-compose.yaml文件, mongo容器可以通過web容器在mongo:27017上訪問,因此settings.py應更改為:

MONGODB_DATABASES = {
    "default": {
        "name": 'api',
        "host": 'mongo',
       "port": 27017
    },
}

我有同樣的問題。

問題是我使用了錯誤的端口轉發並且有一個舊容器已停止但未刪除。

我重新啟動了舊容器。 現在它工作正常。

如其他答案中所述,問題與docker-compose.yml文件中的mongo容器名稱有關,因此必須更改 Django 設置才能找到正確的數據庫主機。

在以后的版本中,Djongo 更改了settings.py中的DATABASE選項。 這將產生以下新的settings.py部分:

DATABASES = {
    'default': {
        'ENGINE': 'djongo',
        'NAME': 'api',
        'CLIENT': {
            'host': 'mongo',
            'port': 27017,
        }
    }
}

請注意, hostport現在是CLIENT的子項。

更多信息可以在Djongo 文檔中找到。

對我有用的只是列出所有容器

docker ps -a

CONTAINER ID        
q624462b055d        
f9324d078256        
r0888c63d21d        
tf5a32702bee        
e68d1ae9b74c

並使用他們的 ID 刪除與 mongodb 相關的那些

docker rm q624462b055d f9324d078256

並更改 docker-compose 文件中的主機和端口

DATABASES = {
    'default': {
        'ENGINE': 'djongo',
        'NAME': 'mongo,',
        'HOST': 'mongo',
        'PORT': 27017,
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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