docker pull postgres:18.1


 mkdir -p /data/postgres/{postgresql_data,postgresql_conf}


docker run -d --name postgres --restart=always -p 5432:5432 -e TZ=Asia/Shanghai -v /etc/localtime:/etc/localtime:ro -e POSTGRES_PASSWORD=SkySys@2023 -v /data/postgres/data:/var/lib/postgresql -v /data/postgres/conf:/etc/postgresql -v /data/postgres/logs:/var/log/postgresql postgres:18.1


# 将容器内的pg_hba.conf和postgresql.conf复制到本地conf目录
docker cp postgres:/var/lib/postgresql/18/docker/postgresql.conf /data/postgres/conf/
docker cp postgres:/var/lib/postgresql/18/docker/pg_hba.conf /data/postgres/conf



修改配置文件
编辑 18/conf/postgresql.conf:
找到并修改listen_addresses行,允许来自任何IP地址的连接。
listen_addresses = '*'
编辑 18/conf/pg_hba.conf:
在文件末尾添加一行,允许所有远程客户端使用密码认证连接。
host    all             all             0.0.0.0/0               md5
重启容器
修改配置后,需要重启容器或重新加载配置使更改生效。
docker restart postgres

容器内可下载命令

docker exec -it postgres /bin/bash
# 更新软件包列表
apt-get update
# 安装 PostGIS 及其依赖。包名通常为 postgresql-<版本>-postgis-<版本>
apt-get install -y postgresql-18-postgis-3

apt install gdal-bin
apt install postgis
进入容器后,su postgres 可直接切换到postgres 用户,在这里操作是一样的
su postgres 

psql


CREATE USER mapuser WITH PASSWORD '123456';

-- 创建数据库 把数据库 mapdb 层面的所有权限授予用户 mapuser
CREATE DATABASE mapdb OWNER mapuser ENCODING 'UTF8';

-- 给用户授权
GRANT ALL PRIVILEGES ON DATABASE mapdb TO mapuser;

-- 启用 PostGIS 扩展
\c mapdb

CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;

CREATE EXTENSION IF NOT EXISTS postgis;
CREATE EXTENSION IF NOT EXISTS postgis_raster;
SELECT extname, extversion FROM pg_extension WHERE extname LIKE 'postgis%';

CREATE TABLE IF NOT EXISTS public.combined_raster (rid serial PRIMARY KEY, rast raster, filename text);
#将表进行授权给postgres用户
alter table combined_raster owner to postgres;

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐