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

容器环境执行Alembic迁移命令报错:名称解析临时失败

错误原因

这个Temporary failure in name resolution错误的核心是本地环境无法解析数据库容器的主机名giatros_db:

  • Docker容器的主机名(比如这里的giatros_db)只有在Docker内部的专属网络中才能被DNS解析,直接在宿主机执行Alembic命令时,宿主机系统不知道这个主机名对应的IP地址,因此无法连接到数据库容器。
解决方法

方法1:修改数据库连接地址为本地可访问地址

  1. 先确认数据库容器已经将5432端口映射到宿主机(比如通过docker run -p 5432:5432 ...或docker-compose的ports配置)
  2. 修改.env文件中的DATABASE_URL,把giatros_db替换为localhost:
    DATABASE_URL=postgresql+psycopg://app_user:app_password@localhost:5432/app_db
    
  3. 重新执行Alembic迁移命令即可。

方法2:在应用容器内部执行迁移命令

应用容器和数据库容器处于同一个Docker网络,能正常解析giatros_db主机名:

  1. 进入应用容器的终端:
    docker exec -it <你的应用容器名称> /bin/bash
    
  2. 在容器内部切换到项目目录,执行Alembic命令:
    alembic revision --autogenerate -m "create cases table"
    

方法3:直接使用数据库容器的IP地址(临时方案)

如果不想修改配置或进入容器,可以先获取数据库容器的IP,替换到连接地址中:

  1. 执行命令获取数据库容器IP:
    docker inspect giatros_db | grep -oP '(?<="IPAddress": ")[^"]+'
    
  2. 修改.env中的DATABASE_URL,把giatros_db替换为查到的IP,比如:
    DATABASE_URL=postgresql+psycopg://app_user:app_password@172.17.0.3:5432/app_db
    

注意:容器重启后IP可能会变化,不推荐长期使用这种方法。

内容的提问来源于stack exchange,提问作者Gabriel Ribeiro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 00:44:54