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

Github Actions中Postgres服务容器无法访问报:nxdomain错误如何解决?

问题原因

出现:nxdomain报错是因为Docker构建容器与Github Actions启动的Postgres服务容器不在同一网络下,无法解析postgres服务域名:

  • Github Actions为Job创建的服务容器默认挂载到专属的github_network_前缀的网桥
  • 直接执行docker build启动的构建容器默认使用Docker默认网桥,两个网络互相隔离,自然无法通过服务名访问Postgres
解决方案

方案1:通过主机端口访问(配置最简单)

你已经将Postgres的5432端口映射到了Runner主机的5432端口,只需将构建时传入的DATABASE_HOST改为Docker网桥默认网关地址即可:

- name: building image
  env:
    DATABASE_HOST: 172.17.0.1
    DATABASE_PORT: 5432
  run: |
    docker build --build-arg DATABASE_HOST=$DATABASE_HOST -t backend:test -f Dockerfile.ci .

方案2:构建容器加入服务所在网络(无需修改业务配置)

先获取当前Job对应的专属网桥名称,构建时指定使用该网络,即可直接通过postgres服务名访问数据库:

- name: building image
  env:
    DATABASE_HOST: postgres
    DATABASE_PORT: 5432
  run: |
    CI_NETWORK=$(docker network ls --filter name=github_network_ --format "{{.Name}}")
    docker build --network $CI_NETWORK --build-arg DATABASE_HOST=$DATABASE_HOST -t backend:test -f Dockerfile.ci .

内容的提问来源于stack exchange,提问作者Bruno Ripa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:15:03