Ubuntu主机 + PostgreSQL 15.5 容器,容器内安装PostGIS

环境(Ubuntu主机 + PostgreSQL 15.5 容器),需要在 postgres15 容器内安装PostGIS。以下是具体步骤:

步骤1:进入PostgreSQL容器

docker exec -it postgres15 bash

步骤2:更新包管理器并安装PostGIS

# 容器内执行
apt-get update
apt-get install -y postgis postgresql-15-postgis-3
  • 注意:若提示 E: Unable to locate package,可能需要先安装postgresql-15(尽管容器内已有):
    apt-get install -y postgresql-15
    

步骤3:连接数据库并启用PostGIS扩展

# 容器内执行(使用postgres用户连接)
psql -U postgres -d postgres
-- 在psql中执行
CREATE EXTENSION postgis;

-- 验证安装
SELECT PostGIS_Version();

完整示例流程

# 1. 进入容器
docker exec -it postgres15 bash

# 2. 安装PostGIS
root@5691ec6e96ee:/# apt-get update
root@5691ec6e96ee:/# apt-get install -y postgis postgresql-15-postgis-3

# 3. 连接数据库
root@5691ec6e96ee:/# psql -U postgres -d postgres

# 4. 创建扩展(在psql中)
postgres=# CREATE EXTENSION postgis;
CREATE EXTENSION

# 5. 验证
postgres=# SELECT PostGIS_Version();
       postgis_version
------------------------------
 3.3 USE_GEOS=1 USE_PROJ=1...
(1 row)

常见问题处理

  1. 权限问题
    若提示 permission denied to create extension,需以 postgres 用户执行(容器内默认已使用该用户)。

  2. 包找不到
    尝试添加PostgreSQL官方源:

    echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list
    wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
    apt-get update
    
  3. 版本不匹配
    确保使用 postgresql-15-postgis-3(对应PostgreSQL 15)。

验证安装

安装成功后,可测试空间函数:

SELECT ST_AsText(ST_GeomFromText('POINT(1 1)'));

输出应为:

 st_astext
-----------
 POINT(1 1)
(1 row)
posted @ 2025-07-02 13:40  祝有好收获  阅读(43)  评论(0)    收藏  举报