You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker-Compose部署Django+PostgreSQL遇POST请求连接拒绝问题求助

解决思路

1. 修复数据库名称不匹配问题

你的docker-compose中PostgreSQL初始化的数据库名是project,但settings.py里Django配置的数据库名是assignment,两者不一致会导致Django无法连接到正确的数据库,可能造成服务看似启动但实际未就绪:

  • 方案一:修改docker-compose.yml中db服务的POSTGRES_DB为assignment:
    environment:
      POSTGRES_PASSWORD: verySecretPassword
      POSTGRES_USER: administrator
      POSTGRES_DB: assignment
    
  • 方案二:修改settings.py中的数据库NAME为project:
    DATABASES = {
        'default': {
            ...
            'NAME': 'project',
            ...
        }
    }
    

修改后重新部署:docker-compose down -v && docker-compose up --build

2. 修正测试请求的目标地址

错误中显示测试代码尝试连接172.17.0.1:8080,需根据测试运行环境调整地址:

  • 如果测试在web容器内部执行(比如在容器里跑pytest):将请求地址改为http://localhost:8080,容器内部可直接访问自身服务。
  • 如果测试在宿主机执行:改用http://localhost:8080(替代172.17.0.1),Docker已将容器8080端口映射到宿主机,localhost即可访问。若在Windows/Mac环境,也可使用http://host.docker.internal:8080。

3. 优化服务启动顺序(替代sleep)

当前用sleep 10等待数据库启动,可靠性低。改用Docker健康检查确保数据库完全就绪后再启动Django:

在docker-compose.yml的db服务中添加健康检查,web服务依赖db的健康状态:

services:
  db:
    image: postgres:latest
    restart: always
    environment:
      POSTGRES_PASSWORD: verySecretPassword
      POSTGRES_USER: administrator
      POSTGRES_DB: assignment  # 对应修改后的数据库名
    volumes:
      - ./data/db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U administrator -d assignment"]
      interval: 5s
      timeout: 5s
      retries: 5

  web:
    build: .
    restart: always
    ports:
      - "8080:8080"
    depends_on:
      db:
        condition: service_healthy
    environment:
      DATABASE_URL: postgresql://administrator:verySecretPassword@db:5432/assignment
    volumes:
      - .:/app

同时删除Dockerfile CMD中的sleep 10:

CMD ["bash", "-c", "python3 manage.py makemigrations && python3 manage.py migrate && python3 manage.py runserver 0.0.0.0:8080"]

4. 验证服务状态

部署完成后:

  • 用docker-compose logs web查看Django启动日志,确认无数据库连接错误。
  • 在宿主机执行curl http://localhost:8080,验证服务是否正常响应。

内容的提问来源于stack exchange,提问作者Carlos Gomez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 22:07:43