Sign inSign up

hylink/postgis

By hylink

Updated 6 months ago

Image
0

1.7K

hylink/postgis repository overview

postgis定制镜像使

新增功能配置

  • 添加数据库默认端口配置
  • 添加最大连接数配置,默认修改为:1000
  • 添加工作内存、缓存配置
  • 添加操作日志审计配置
  • 添加慢查询日志配置
  • 添加管理权、配置权、使用权账户配置
  • 添加wal日志自动清理服务
  • 添加timescaledb扩展
  • 添加支持用环境变量配置主从
  • 添加支持用环境变量从库升级主库
  • 添加支持用环境变量清除数据文件
  • 添加支持用环境变量配置从库自动升级主库

如何使用

使用镜像 hylink/postgis:12-3.4-alpine3.18
账户环境变量配置,只有在第一次初始化数据库,没有生成数据文件目录时生效。
  • POSTGRES_USER # 管理权用户名, 数据库默认的超级用户
  • POSTGRES_PASSWORD # 管理权用户密码
  • POSTGRES_CONFIG_USER # 配置权用户名
  • POSTGRES_CONFIG_PASSWORD # 配置权用户密码
  • POSTGRES_USE_USER # 使用权用户名
  • POSTGRES_USE_PASSWORD # 使用权用户密码
其他环境变量配置,配置重启数据库后即可生效:
  • POSTGRES_PORT # 数据库默认端口,默认值为5432. 可选项。
  • POSTGRES_LOGGING_COLLECTOR # 审计日志开关, on/off, 默认值为 off. 可选项。
  • POSTGRES_LOG_DESTINATION # 审计日志存储类型,stderr/csvlog/syslog/eventlog, 默认值 stderr. 可选项。
  • POSTGRES_LOG_STATEMENT # 指定要记录的SQL语句的级别, none/ddl/mod/all, 默认值 all, 开启审计日志和慢查询日志时一般设置为 mod. 可选项。
  • POSTGRES_WAL_LEVEL # 设置wal日志存储级别, minimal/replica/logical, 默认值 replica. 可选项。
  • POSTGRES_WORK_MEM # 工作内存, 默认值为4MB,最小值为64KB. 可选项。
  • POSTGRES_SHARED_BUFFERS # 指定共享缓冲区的大小,默认为128MB。可以使用单位进行指定,例如1GB、512MB等. 可选项。
  • POSTGRES_MAX_CONNECTIONS # 指定最大连接数, 默认值 1000. 可选项。
  • POSTGRES_MAX_WAL_SIZE # 预处理日志保存最大值, 默认值 1GB, 可选项。
  • POSTGRES_MIN_WAL_SIZE # 预处理日志保存最小值, 默认值 80MB, 可选项。
  • POSTGRES_WAL_KEEP_SEGMENTS # 预处理日志文件保存的最小数量, 默认值 512, 可选项。
  • CLEAN_WAL_ENABLE # 清理wal日志服务开关, 默认值 true, 可选项
  • CLEAN_WAL_CRON # 清理wal日志服务cron表达式, 默认值 0 0 */7 * *, 此默认值表示每7天清理一次. . 可选项。
  • DESTROY_DATABASE_ON_RESTART # 重启时是否销毁数据目录重新创建, 默认值 false, 可选项。
  • ALLOW_IP_RANGE # ip白名单配置, 格式: ip/24, 可选项。
  • REPLICATION # 开启主从流复制, 默认值 false, 可选项。
  • REPLICATE_FROM # 流复制主库host, 可选项。
  • REPLICATE_PORT # 流复制主库端口, 可选项。
  • REPLICATION_USER # 流复制主库用户, 可选项。
  • REPLICATION_PASS # 流复制主库密码, 可选项。
  • APPLICATION_NAME # 从库应用名, 可选项。
  • REPLICATE_SLOT # 主从复制是否使用复制槽, 默认值: true, 可选项。
  • PROMOTE_MASTER # 升为主库, 主库设置时不会进行任何操作, 默认值: false。 可选项。
  • AUTO_PROMOTE_MASTER # 此变量只有在从库时生效。检测主从连接,如果连接断开超过REPLICATE_ERROR_MAX_TIME设定值自动升级为主库。如果做读写分离时建议设置成false。 默认值: false。可选项。
  • REPLICATE_ERROR_MAX_TIME # 当AUTO_PROMOTE_MASTER=true时生效,主从复制异常允许最大时长。默认值: 10, 单位: 分钟。 可选项。
主从复制需要配置的环境变量
主库
  • ALLOW_IP_RANGE # ip白名单配置, 格式: ip/24, 可选项。
从库
  • REPLICATION # 开启主从流复制, 默认值: false。
  • REPLICATE_FROM # 流复制主库host。
  • REPLICATE_PORT # 流复制主库端口。
  • REPLICATION_USER # 流复制主库用户。
  • REPLICATION_PASS # 流复制主库密码。
  • APPLICATION_NAME # 从库应用名。
用户分权使用问题
默认创建的分权管理用户只有在初始化的postgres数据库下的public模式下才生效, 如果新创建数据库或者模式, 需要在新建的数据库中再执行一次赋权。
-- 配置权用户权限设置
GRANT CREATE, TEMPORARY ON DATABASE 数据库名 TO 配置权用户名;
GRANT CREATE, USAGE ON SCHEMA 模式名 TO 配置权用户名;
ALTER DEFAULT PRIVILEGES IN SCHEMA 模式名 GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO 配置权用户名;
ALTER DEFAULT PRIVILEGES IN SCHEMA 模式名 GRANT SELECT, UPDATE, USAGE ON SEQUENCES TO 配置权用户名;
ALTER DEFAULT PRIVILEGES IN SCHEMA 模式名 GRANT EXECUTE ON FUNCTIONS TO 配置权用户名;
    
-- 使用权用户权限设置
GRANT USAGE ON SCHEMA 模式名 TO 使用权用户名;
-- 下面的授权命令需要分别在管理权用户和配置权用户下执行
ALTER DEFAULT PRIVILEGES IN SCHEMA 模式名 GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO 使用权用户名;
ALTER DEFAULT PRIVILEGES IN SCHEMA 模式名 GRANT SELECT, UPDATE ON SEQUENCES TO 使用权用户名;
ALTER DEFAULT PRIVILEGES IN SCHEMA 模式名 GRANT EXECUTE ON FUNCTIONS TO 使用权用户名;
docker-compose 示例
# Use root/example as user/password credentials
version: '3.1'
services:
  clickhouse:
    container_name: postgres
    image: hylink/postgis:12-3.4-alpine3.18
    restart: unless-stopped
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_USER=hlk_dba
      - POSTGRES_PASSWORD=hlk_dba
      - POSTGRES_CONFIG_USER=config
      - POSTGRES_CONFIG_PASSWORD=config
      - POSTGRES_USE_USER=use
      - POSTGRES_USE_PASSWORD=use
      - POSTGRES_PORT=5432
      - POSTGRES_LOGGING_COLLECTOR=on
      - POSTGRES_LOG_DESTINATION=csvlog
      - POSTGRES_LOG_STATEMENT=all
      - POSTGRES_WORK_MEM=128MB
      - MAX_CONNECTIONS=1000
    ulimits:
      nofile:
        soft: 262144
        hard: 262144
    #volumes:
      # 数据库文件
      #- /root/docker/postgres:/var/lib/postgresql/data

docker run 示例
docker run -d \
--restart=unless-stopped \
--name=postgres \
-p 5432:5432 \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=<PASSWORD> \
-e POSTGRES_CONFIG_USER=config \
-e POSTGRES_CONFIG_PASSWORD=<PASSWORD> \
-e POSTGRES_USE_USER=use \
-e POSTGRES_USE_PASSWORD=<PASSWORD> \
-e POSTGRES_DB=postgres \
-e POSTGRES_PORT=5432 \
-e POSTGRES_LOGGING_COLLECTOR=on \
-e POSTGRES_LOG_DESTINATION=csvlog \
-e POSTGRES_LOG_STATEMENT=all \
-e POSTGRES_WORK_MEM=128MB \
-e MAX_CONNECTIONS=1000 \
-v /home/hylink/docker/container/postgis:/var/lib/postgresql/data \
hylink/postgres:12.15-alpine3.17

Tag summary

Content type

Image

Digest

sha256:bc5ed0806

Size

149.8 MB

Last updated

6 months ago

docker pull hylink/postgis