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

使用PyCharm运行Docker Compose内Django时无法识别postgres服务名如何解决

问题排查与解决方案

1. 修正Postgres端口配置

你当前docker-compose.yml中postgres服务的端口映射配置错误:

ports:
    - "5400:5399"

官方postgres镜像默认监听5432端口,上述配置将容器侧端口错写为5399,导致postgres服务没有在预期端口运行,即便是同网络主机名解析正常也无法连接。
修改为:

ports:
    - "5400:5432" # 仅需要外部访问时保留,同网络内部访问可以直接删除ports配置

2. 确认PyCharm启动时依赖服务已运行

你需要在PyCharm的Django Server运行配置中,添加「启动前」任务,先执行docker compose up -d postgres redis启动依赖服务,确保django容器启动时postgres容器已经在integration网络中正常运行。
你可以手动先执行上述命令启动postgres和redis后,进入django容器执行ping postgres验证网络连通性:

  • 若能正常解析,说明服务网络配置正常,问题出在PyCharm启动逻辑没有加载全部compose服务
  • 若无法解析,执行docker inspect postgres和docker inspect django确认两个容器的Networks字段均归属integration网络。

3. 补充Django数据库连接端口

你当前docker_local.py中的数据库连接串未明确指定端口,修正postgres端口后,调整连接串配置:

DATABASES = {
    'default': dj_database_url.config(
        default='postgres://vagrant:vagrant@postgres:5432/vagrant'),
}
DATABASES['default']['ENGINE'] = 'django.contrib.gis.db.backends.postgis'

4. 校验PyCharm远程解释器配置

确认你配置的Docker Compose远程解释器关联的服务为django,并且PyCharm启动容器时默认加入compose创建的integration网络,避免单独启动django容器脱离现有compose网络导致无法解析其他服务主机名。

内容的提问来源于stack exchange,提问作者Joe Howard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:45:06