![](/img/trans.png)
[英]pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused django to heroku
[英]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
已經嘗試過這個:
默認情況下,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,
}
}
}
請注意, host
和port
現在是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.