django - Dockerized Django REST Framework / Postgresql - 不允许的主机
问题描述
当我尝试执行以下命令时:
sudo docker-compose up
我在终端内收到以下错误:
这是我的 docker 文件的样子:
FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir /agent-technologies
WORKDIR /agent-technologies
COPY . /agent-technologies
RUN pip install -r requirements.txt
EXPOSE 8000
这是我的docker-compose.yml
样子:
version: '3'
services:
db:
image: postgres
environment:
- POSTGRES_USER=stefan_radonjic
- POSTGRES_PASSWORD=cepajecar995
- POSTGRES_DB=agent_technologies_db
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/agent-technologies
ports:
- "8000:8000"
links:
- db
depends_on:
- db
最后是我之前创建的 PostgresSQL DB 的设置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'agent_technologies_db',
'USER': 'stefan_radonjic',
'PASSWORD': 'cepajecar995',
'HOST': 'db',
'PORT': '',
}
}
解决方案
您的 django 应用程序正在尝试连接到“localhost”数据库,但由于它位于自己的容器内——localhost 不是访问数据库的正确 uri。
如果您通过 db 容器名称引用,Dockercompose 会将您的名称查询解析为数据库。在您的情况下,它是“db”
当图片上的文本读取时 - 您必须将“0.0.0.0”添加到ALLOWED_HOSTS
设置模块内的变量中。
请确保您已仔细阅读 django 文档。这是相当有活力的。
推荐阅读
- tensorflow - Resnet50 预测所有图像属于同一类
- c# - 如何在 MVC c# 中创建依赖下拉列表
- bash - 如何使用 bash 在脚本中调用另一个脚本
- sql - SQL Server Sum Distinct Group by
- python - 阴影去除道路图像
- telethon - 电报中的聊天和频道有什么区别?
- php - 如何保护 Foundation\helpers.php 文件免受客户端不必要的更改?
- java - 尝试通过蓝牙连接小米手环 2
- c# - 在 MVVM 中,我有一些 DataTable 作为数据源。我应该添加新模型来集中它们吗?
- kdb - kdb passing column names into functions