Sign inSign up

hylink/postgres

By hylink

Updated 8 months ago

Image
0

1.3K

hylink/postgres repository overview

postgresql定制镜像使

新增功能配置

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

如何使用

使用镜像 hylink/postgres:12.15-alpine3.17
账户环境变量配置,只有在第一次初始化数据库,没有生成数据文件目录时生效。
  • POSTGRES_USER # 管理权用户名, 数据库默认的超级用户, 默认值:postgres
  • POSTGRES_PASSWORD # 管理权用户密码。 必填项
  • POSTGRES_CONFIG_USER # 配置权用户名。可选项 -不填不会创建用户
  • POSTGRES_CONFIG_PASSWORD # 配置权用户密码。可选项 -不填不会创建用户
  • POSTGRES_USE_USER # 使用权用户名。可选项- 不填不会创建用户
  • POSTGRES_USE_PASSWORD # 使用权用户密码。可选项- 不填不会创建用户
  • POSTGRES_DB # 默认数据库名, 默认值为postgres. 可选项
其他环境变量配置,配置重启数据库后即可生效:
  • PGPORT # 数据库默认端口,默认值为5432。可选项
  • POSTGRES_LOGGING_COLLECTOR # 审计日志开关, on/off, 默认值为 off。可选项
  • POSTGRES_LOG_DESTINATION # 审计日志存储类型,stderr/csvlog/syslog/eventlog, 默认值为stderr。可选项
  • POSTGRES_LOG_STATEMENT # 指定要记录的SQL语句的级别, none/ddl/mod/all, 默认值为none, 开启审计日志和慢查询日志时一般设置为 all。可选项
  • 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日志服务开关, 默认值 false, 可选项
  • CLEAN_WAL_CRON # 清理wal日志服务cron表达式, 默认值 0 0 */7 * *, 此默认值表示每7天清理一次
用户分权使用问题
默认创建的分权管理用户只有在初始化的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:
  postgres:
    container_name: postgres
    image: hylink/postgres:12.15-alpine3.17
    restart: unless-stopped
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_USER=hlk_dba
      - POSTGRES_PASSWORD=<PASSWORD>
      - POSTGRES_CONFIG_USER=config
      - POSTGRES_CONFIG_PASSWORD=<PASSWORD>
      - POSTGRES_USE_USER=use
      - POSTGRES_USE_PASSWORD=<PASSWORD>
      - PGPORT=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

Tag summary

Content type

Image

Digest

sha256:d9f06ee00

Size

92.7 MB

Last updated

8 months ago

docker pull hylink/postgres