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

Docker部署Django+PostgreSQL时数据库连接失败求助

Django + PostgreSQL容器化部署连接问题解决指南

问题诊断

  • 数据库端口配置错误:容器间通信应使用PostgreSQL容器内部端口(5432),而非宿主机映射端口(5433)
  • 网络名称自动添加前缀:Docker Compose默认会给网络添加项目目录名作为前缀,导致自定义网络名称未生效

具体修复步骤

1. 修正Django数据库配置(settings.py)

将数据库PORT从5433改为容器内部端口5432:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'InventoryManagement',
        'USER': 'postgres',
        'PASSWORD': 'root',
        'HOST': 'db', 
        'PORT': '5432'  # 修正为容器内部端口
    }
}

2. 修正Docker Compose网络配置

在networks定义中添加name字段,强制使用指定的网络名称:

version: '3'

services:
  web:
    build: .
    ports:
      - "8000:8000"
    depends_on:
      - db
    networks:
      - inventory_network

  db:
    ports: 
      - "5433:5432"
    image: postgres:16
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=root
      - POSTGRES_DB=InventoryManagement
    networks:
      - inventory_network

networks:
  inventory_network:
    driver: bridge
    name: inventory_network  # 指定网络名称,避免自动添加前缀

3. (可选但推荐)添加数据库就绪等待机制

depends_on仅保证服务启动顺序,不确保PostgreSQL完成初始化。可通过以下方式添加等待逻辑:

修改docker-compose.yml添加等待命令

services:
  web:
    build: .
    ports:
      - "8000:8000"
    depends_on:
      - db
    networks:
      - inventory_network
    command: >
      sh -c "until pg_isready -h db -p 5432 -U postgres; do
              echo waiting for postgres;
              sleep 2;
            done;
            python manage.py runserver 0.0.0.0:8000"

对应修改Dockerfile安装postgresql-client

FROM python:3.9

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

WORKDIR /app

# 安装postgresql-client用于执行pg_isready命令
RUN apt-get update && apt-get install -y postgresql-client && rm -rf /var/lib/apt/lists/*

COPY requirements.txt /app/

RUN pip install --no-cache-dir -r requirements.txt

COPY . /app/

EXPOSE 8000

CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

验证修复

  1. 清理现有容器和网络:
sudo docker compose down -v
  1. 重新构建并启动服务:
sudo docker compose up --build

内容的提问来源于stack exchange,提问作者Prisha Goel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 23:20:53