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

在GitHub Action中无法连接PostgreSQL数据库:名称解析临时失败

解决GitHub Actions中连接PostgreSQL的"临时域名解析失败"问题

问题原因

你的测试Job运行在python:3.11-slim容器内,而定义的PostgreSQL服务容器默认和它处于隔离的网络环境,导致Python容器无法通过postgres主机名解析到数据库容器,从而抛出connection is bad: Temporary failure in name resolution错误。

解决方案

下面提供两种可行的解决方式:

方法一:通过localhost+端口映射访问(推荐)

修改工作流配置,给PostgreSQL服务添加端口映射和健康检查,同时将数据库主机地址改为localhost:

test:
  runs-on: ubuntu-latest
  container: python:3.11-slim
  env:
    POSTGRES_HOST: localhost
    POSTGRES_DB: test
    POSTGRES_PASSWORD: postgres
    POSTGRES_USER: postgres
  services:
    postgres:
      image: postgres
      env:
        POSTGRES_PASSWORD: postgres
        POSTGRES_DB: test
      ports:
        - 5432:5432
      options: >-
        --health-cmd pg_isready
        --health-interval 10s
        --health-timeout 5s
        --health-retries 5
  needs: lint
  steps:
  - uses: actions/checkout@v3
  - name: Install dependencies
    run: |
      python -m pip install --upgrade pip
      pip install -r requirements.txt
      alembic upgrade head
  - name: Run tests
    run: pytest

方法二:让两个容器共享同一网络

给Job容器和PostgreSQL服务容器指定同一个网络,这样就能继续使用postgres作为主机名访问:

test:
  runs-on: ubuntu-latest
  container:
    image: python:3.11-slim
    options: --network test-network
  env:
    POSTGRES_HOST: postgres
    POSTGRES_DB: test
    POSTGRES_PASSWORD: postgres
    POSTGRES_USER: postgres
  services:
    postgres:
      image: postgres
      env:
        POSTGRES_PASSWORD: postgres
        POSTGRES_DB: test
      options: --network test-network
  needs: lint
  steps:
  - uses: actions/checkout@v3
  - name: Install dependencies
    run: |
      python -m pip install --upgrade pip
      pip install -r requirements.txt
      alembic upgrade head
  - name: Run tests
    run: pytest

额外注意事项

  • 必须添加PostgreSQL的健康检查配置,确保数据库完全启动后再执行迁移和测试,避免出现"数据库未就绪"的连接问题。
  • 显式指定POSTGRES_USER环境变量,和PostgreSQL容器的默认配置保持一致,避免潜在的权限问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 14:02:36