【问题标题】:Docker and Django Rest Framework "unexpectedly dropped the connection"Docker 和 Django Rest Framework “意外断开连接”
【发布时间】:2021-10-31 06:49:36
【问题描述】:

概述

我有一个奇怪的情况,当我将DEFAULT_FILTER_BACKENDS 应用到我的 Django Rest Framework (DRF) 设置时,我得到一个“Safari 无法打开 0.0.0.0:8000 因为服务器意外断开连接”错误消息。

我应该注意,下面的配置与标准 poetry run python manage.py runserver 0.0.0.0:8000 命令完美配合,即当我不使用 Docker 时。

我的 Django settings.py 文件是标准的,除了:

INSTALLED_APPS = [
    ...
    "rest_framework",
    ...
]
REST_FRAMEWORK = {
    "DEFAULT_FILTER_BACKENDS": (
        "django_filters.rest_framework.DjangoFilterBackend",
    ),
}

当我删除/注释掉 "DEFAULT_FILTER_BACKENDS" 部分时,服务器正常工作,我的页面加载完美。

Dockerfile

# pull official base image
FROM python:3.9.0-buster

# set work directory
WORKDIR /usr/src/app

# set environment variables
ENV DJANGO_SETTINGS_MODULE=barrys_project.settings
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# install dependencies
RUN pip install --no-cache-dir --upgrade pip
RUN pip install --no-cache-dir poetry
COPY ./poetry.lock ./pyproject.toml ./
RUN poetry config virtualenvs.create false
RUN poetry install

# copy entrypoint.sh
COPY ./entrypoint.sh ./

# copy project
COPY . .

# run entrypoint.sh
ENTRYPOINT ["/usr/src/app/entrypoint.sh"]

Docker 编写文件

version: '3.8'

services:
  web:
    build: ./
    volumes:
      - ./:/usr/src/app/
    command: poetry run python manage.py runserver 0.0.0.0:8000
    ports:
      - 8000:8000
    env_file:
      - ./.env
    depends_on:
      - db

  db:
    image: postgres:13.3-alpine
    volumes:
      - postgres-data:/var/lib/postgresql/data/
    ports:
      - 5432:5432
    environment:
      - POSTGRES_USER=barry
      - POSTGRES_PASSWORD=secret
      - POSTGRES_DB=barrysdatabase

volumes:
  postgres-data:

入口点.sh

#!/bin/sh

poetry run python manage.py migrate

exec "$@"

【问题讨论】:

  • 查看web 服务的日志。那里可能有一个例外,例如设置错误,服务器无法启动。

标签: python django docker django-rest-framework


【解决方案1】:

原来我的 Docker 容器中有异常需要:

docker-compose build

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-30
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 2019-05-10
    • 2021-03-07
    • 2015-02-13
    相关资源
    最近更新 更多