Docker 环境安装postgres+postgis扩展

一、单独安装Postgresql


1、安装docker。(省略,自行百度安装)

2、拉取postgresql镜像。

docker pull postgres:12

3、运行postgres

docker run --name postgres --restart=always -e POSTGRES_PASSWORD=postgres -p 5432:25432 -v /docker/postgres-12:/var/lib/postgresql/data -d postgres:12
// 进入postgres容器 
docker exec -it postgres bash
// 登录数据库 
psql -U postgres -W

二、安装postgis(包含了postgres,无须安装pg)

1、安装docker。(省略,自行百度安装)

2、拉取postgis镜像。 (镜像里面已经包含了postgresql数据库)

docker pull postgis/postgis:12-3.2

3、运行postgis

docker run --name postgis --restart=always -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=123456 -e POSTGRES_DBNAME=gis_db -p 5432:5432 -v /docker/postgis/data:/var/lib/postgis/data -v /docker/postgresql/data:/var/lib/postgresql/data -d postgis/postgis:12-3.2

4、参数说明

--name:      为容器指定一个名称
--restart=always:      参数能够使我们在重启docker时,自动启动相关容器。
-e POSTGRES_USER:      设置数据库登录用户名
-e POSTGRES_PASSWORD:  设置登录密码
-e POSTGRES_DBNAME:    设置db名称
-p:    指定端口映射
-v:       挂载目录,本地目录:容器目录
-d:    后台运行容器并返回容器ID,也即启动守护式容器(后台运行);

5、日志相关的配置,修改配置文件 postgresql.conf

  • logging_collector = on/off
    是否将日志重定向至文件中,默认是off。
  • log_directory = ‘pg_log’
    日志文件目录,默认是PGDATA的相对路径,即PGDATA的相对路径,即{PGDATA}/pg_log,也可以改为绝对路径。日志文件可能会非常多,建议将日志重定向到其他目录或分区。将此配置修改其他目录时,必须先创建此目录,并修改权限,使得postgres用户对该目录有写权限。
  • log_filename = ‘postgresql-%Y-%m-%d_%H%M%S.log’
    日志文件命名形式,使用默认即可
  • log_rotation_age = 1d
    单个日志文件的生存期,默认1天,在日志文件大小没有达到log_rotation_size时,一天只生成一个日志文件。
  • log_rotation_size = 10MB
    单个日志文件的大小,如果时间没有超过log_rotation_age,一个日志文件最大只能到10M,否则将新生成一个日志文件。
  • log_truncate_on_rotation = off
    当日志文件已存在时,该配置如果为off,新生成的日志将在文件尾部追加,如果为on,则会覆盖原来的日志。
  • log_lock_waits = off
    控制当一个会话等待时间超过deadlock_timeout而被锁时是否产生一个日志信息。在判断一个锁等待是否会影响性能时是有用的,缺省是off。
  • log_statement = ‘none’ # none, ddl, mod, all
    控制记录哪些SQL语句。none不记录,ddl记录所有数据定义命令,比如CREATE,ALTER和DROP 语句。mod记录所有ddl语句,加上数据修改语句INSERT,UPDATE等。all记录所有执行的语句,将此配置设置为all可跟踪整个数据库执行的SQL语句。
  • log_duration = off
    记录每条SQL语句执行完成消耗的时间,将此配置设置为on,用于统计哪些SQL语句耗时较长。
  • log_min_duration_statement = -1
    1表示关闭记录。0表示记录所有statements的执行时间按,若为>0(单位为ms)的一个值,则记录执行时间大于该值的statements。
    个人更喜欢使用该配置来跟踪那些耗时较长,可能存在性能问题的SQL语句。虽然使用log_statement和log_duration也能够统计SQL语句及耗时,但是SQL语句和耗时统计结果可能相差很多行,或在不同的文件中,但是log_min_duration_statement会将SQL语句和耗时在同一行记录,更方便阅读。
  • log_connections = off
    是否记录连接日志
  • log_disconnections = off
    是否记录连接断开日志
  • log_line_prefix = ‘%m %p %u %d %r ’
    日志输出格式(%m,%p实际意义配置文件中有解释),可根据自己需要设置(能够记录时间,用户名称,数据库名称,客户端IP和端口,方便定位问题)。
  • log_timezone = ‘Asia/Shanghai’
    日志时区,最好和服务器设置同一个时区,方便问题定位
posted @   我命由我不由天—hao  阅读(2043)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示