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’
日志时区,最好和服务器设置同一个时区,方便问题定位
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析