Docker环境下Django执行makemigrations报主机名解析错误的解决办法
解决Docker环境下Django makemigrations无法解析db主机的问题
出现could not translate host name "db" to address: Unknown host错误,核心原因是你在本地主机环境直接执行了makemigrations命令,而本地DNS无法识别Docker Compose创建的内部网络中的db服务名。解决步骤如下:
确保Docker Compose服务处于运行状态
先启动所有服务(后台运行):docker-compose up -d可以用
docker-compose ps检查db和web服务是否正常启动。进入web容器内部执行Django管理命令
所有Django相关的操作(包括makemigrations、migrate)都需要在Docker容器的环境中执行,因为容器和db服务处于同一个Docker内部网络,能正常解析db主机名:docker-compose exec web python manage.py makemigrations执行完迁移后,别忘了运行migrate:
docker-compose exec web python manage.py migrate额外检查项
- 确认
docker-compose.yml中db服务的名称确实是db,和settings.py里DB_HOST的默认值一致,当前配置是正确的。 - 如果
db服务启动失败,查看日志排查问题:docker-compose logs db
- 确认
内容的提问来源于stack exchange,提问作者vivi
相关产品推荐
相关产品推荐

