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

GitHub Actions运行Django CI时找不到postgis.control但文件实际存在求助

问题根源

你配置中使用的PostgreSQL是GitHub Actions提供的独立service容器,和运行CI步骤的runner宿主机是完全隔离的环境:

  • 你在psycopg2 prerequisites步骤里安装的postgis相关包,都是装在runner宿主机的PostgreSQL路径下,你执行find命令查到的文件也是宿主机上的
  • 测试阶段Django连接的是service容器里的PostgreSQL实例,这个容器用的是官方postgres:12镜像,默认没有安装PostGIS扩展,自然会报找不到postgis.control的错误

修复方案

1. 替换PostgreSQL service镜像

直接使用官方预打包好PostGIS的镜像,不需要自己手动在容器里装扩展,修改services部分的配置:

services:
  postgres:
    # 替换为对应版本的postgis镜像,12对应postgres主版本,3.3对应postgis主版本,和你预期的安装版本匹配
    image: postgis/postgis:12-3.3
    ports:
      - 5432:5432
    env:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: ghostlabs_localhost
    options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5

2. 精简依赖安装步骤

不需要在runner宿主机上安装PostgreSQL服务和PostGIS服务端扩展,只保留客户端依赖即可,修改psycopg2 prerequisites步骤的run命令:

- name: psycopg2 prerequisites
  run: |
    sudo apt-get update && sudo apt-get install -y libpq-dev gdal-bin

修改后重新运行CI,测试阶段连接容器里的Postgres时,就能正常找到PostGIS扩展文件,不会再报UndefinedFile错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:06:02