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

Debian虚拟机中Django+Docker+PostgreSQL无法执行迁移问题

解决Django容器无法解析PostgreSQL容器主机名的迁移问题

核心原因及解决办法

1. 必须在Django容器内部执行迁移命令

你大概率是在宿主机直接运行python manage.py migrate,宿主机的DNS系统无法解析Docker Compose创建的容器服务名pgdb,这是最常见的问题。

正确操作:

  • 查看Django容器的名称或ID:
    docker ps
    
  • 进入容器内部执行迁移:
    docker exec -it <Django容器名称/ID> python manage.py migrate
    
    或者直接用docker-compose命令执行:
    docker-compose exec server python manage.py migrate
    

2. 验证容器间网络连通性

如果上述操作仍报错,手动排查网络连通性:

  • 进入Django容器:
    docker exec -it <Django容器名称/ID> bash
    
  • 在容器内尝试ping pgdb:
    ping pgdb
    
    如果ping不通,执行以下操作:
    • 重启整个服务栈,确保网络配置完全生效:
      docker-compose down -v
      docker-compose up -d
      
    • 确认PostgreSQL容器完全就绪:depends_on仅保证容器启动顺序,不保证PostgreSQL服务加载完成。可以给Django服务添加启动延迟,或者使用wait-for-it工具,等待PostgreSQL端口就绪后再启动Django。

3. 核对Django数据库配置

你的settings.py配置本身无明显错误,但需再次确认:

  • HOST字段严格对应docker-compose中PostgreSQL的服务名pgdb(Docker服务名大小写敏感)
  • 数据库名称、用户名、密码与PostgreSQL容器的环境变量完全匹配

内容的提问来源于stack exchange,提问作者Дмитрий Кулиш

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 21:27:18