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

CentOS8.4下docker-compose部署prisma1.34时host.docker.internal无法使用

问题排查解决步骤
  • 第一步:验证hosts解析是否生效
    先进入运行中的Prisma容器,检查解析记录是否写入成功:
    # 先获取容器ID/名称
    docker ps | grep prismagraphql/prisma:1.34
    # 查看容器内hosts文件
    docker exec -it <替换为你的容器ID> cat /etc/hosts
    
    正常输出中会存在host.docker.internal <网关IP>的记录,若不存在请检查docker-compose.yml的YAML格式是否正确,确认extra_hosts字段缩进没有用Tab代替空格,格式符合YAML规范。
  • 第二步:验证网络连通性
    仍在容器内执行命令测试网络连通:
    # 测试ICMP连通
    ping host.docker.internal
    # 测试PostgreSQL端口连通
    nc -zv host.docker.internal 5432
    
    若ping失败,按以下顺序排查:
    1. 检查宿主机SELinux状态,执行getenforce查看,若输出Enforcing,临时关闭测试setenforce 0,如果问题解决可以将SELinux设为permissive模式或者添加对应放行规则。
    2. 确认firewalld防火墙已完全关闭,或者已放行docker网段、5432端口:
    # 查看防火墙状态
    systemctl status firewalld
    # 临时关闭防火墙测试
    systemctl stop firewalld
    
    若ping成功但端口不通,检查宿主机PostgreSQL配置:
    1. 查看postgresql.conf中listen_addresses配置,默认值为127.0.0.1,仅允许本地访问,需要改为*监听所有地址,修改后重启PostgreSQL服务。
    2. 查看pg_hba.conf配置,添加docker网段的访问权限,新增行:
    host    all             all             172.16.0.0/12           scram-sha-256
    
    保存后重启PostgreSQL服务。
  • 第三步:替代方案测试
    若host.docker.internal解析始终异常,可以直接使用docker网桥的网关IP访问宿主机:
    1. 在宿主机执行ip a show docker0,获取inet对应的IP地址,一般为172.17.0.1;如果是自定义docker网络,也可以在容器内执行ip route查看默认路由的网关IP。
    2. 将docker-compose.yml中PRISMA_CONFIG下的host值替换为上述IP,重新启动容器测试。

内容的提问来源于stack exchange,提问作者Performau Todev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:06:07