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

执行Docker迁移命令时出现DB主机名解析失败错误,寻求解决方案

Django迁移时主机名"db"解析失败的解决办法

执行docker-compose exec web python manage.py migrate时触发错误:

django.db.utils.OperationalError: could not translate host name "db" to address: Temporary failure in name resolution

已尝试Stack Overflow常规方案,当前正在按照《Django for Professionals》操作,以下是我的配置文件:

docker-compose.yml

services:
  web:
    build: .
    command: python /code/manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - 8000:8000
    depends_on:
      - db
  db:
    image: postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    ports: 
      - 5432:5432
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres

volumes:
  postgres_data:

Dockerfile

FROM python:3.9.6

# 设置环境变量
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# 设置工作目录
WORKDIR /code

# 安装依赖
COPY Pipfile Pipfile.lock /code/
RUN pip install pipenv && pipenv install --system

# 复制项目文件
COPY . /code/

settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': 'db',
        'PORT': 5432
    }
}

可行排查/解决步骤

  • 确认DB容器状态:执行docker-compose ps查看db服务是否正常启动,若未启动,先运行docker-compose up -d db,等待数据库初始化完成(看日志出现database system is ready to accept connections)再启动web服务。
  • 重置Docker网络:执行docker-compose down,重启本地Docker服务后,再重新启动容器docker-compose up -d,清除DNS缓存问题。
  • 显式定义自定义网络:在docker-compose.yml中添加自定义网络,确保web和db处于同一网络环境:
    services:
      web:
        # 保留原有配置
        networks:
          - app-network
      db:
        # 保留原有配置
        networks:
          - app-network
    
    volumes:
      postgres_data:
    
    networks:
      app-network:
        driver: bridge
    
  • 临时替换为容器IP:通过docker inspect <db容器ID>获取db容器的IP地址,将settings.py中的HOST改为该IP,执行migrate测试是否成功,以此确认是否为DNS解析问题。

内容的提问来源于stack exchange,提问作者Aman Choudhary

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 08:06:28