Docker安装带中文全文搜索插件zhparser的Postgresql数据库

上一篇讲了在已经安装了PG数据库的情况下,安装全文搜索插件zhparser遇到的问题。在一个全新的环境中安装带有全文搜索插件zhparser的PG数据库,可以使用已经做好的Docker镜像,在安装的过程中,我来说说我遇到过的问题,大部分问题来自postgresql镜像。

1、拉取zhparser的镜像

基本运行命令:

docker run -p 5432:5432 chenxinaz/zhparser

在docker hub中zhparser项目的地址,https://hub.docker.com/r/chenxinaz/zhparser,这个镜像基于postgresql的镜像来做的,包含postgresql的数据库,不用额外安装postgresql数据库。上面的运行命令测试还可以,不建议正式使用。

2、初始化插件

在指定数据库初始化插件,运行下面SQL:

CREATE EXTENSION zhparser;
CREATE TEXT SEARCH CONFIGURATION chinese_zh (PARSER = zhparser);
ALTER TEXT SEARCH CONFIGURATION chinese_zh ADD MAPPING FOR n,v,a,i,e,l WITH simple;

测试插件是否安装成功SQL:

select ts_debug('chinese_zh', '白垩纪是地球上海陆分布和生物界急剧变化、火山活动频繁的时代');

3、关于postgresql镜像的高级参数

zhparser的可用环境参数大部分来自postgresql镜像,可以直接查看postgresql进行的环境参数。在初始化容器的时候,不设定容器参数,之后改起来就很麻烦。

3.1、指定数据库用户和密码

docker run -d --name pg -e POSTGRES_PASSWORD=password  chenxinaz/zhparser

能指定的环境参数:

  • POSTGRES_PASSWORD
  • POSTGRES_USER
  • POSTGRES_DB
  • POSTGRES_INITDB_ARGS
  • POSTGRES_INITDB_WALDIR
  • PGDATA

3.2、推荐一组比较好用的命令

这组命令能挂载配置目录,挂载数据库目录,挂载初始化目录,用于数据库的初始化。

#复制一个配置文件的副本到本地目录
$ docker run -i --rm postgres cat /usr/share/postgresql/postgresql.conf.sample > my-postgres.conf

# 指定配置文件的位置
$ docker run -d \
-p 15432:5432  \
-e POSTGRES_PASSWORD=password \
-v "$本地配置文件位置/postgres.conf":/etc/postgresql/postgresql.conf \
-v "$本地数据文件位置/data":/var/lib/postgresql/data \
-v "$初始化脚本位置/docker-entrypoint-initdb.d":/docker-entrypoint-initdb.d \
--name=pg \
chenxinaz/zhparser \
-c 'config_file=/etc/postgresql/postgresql.conf'

其中"$初始化脚本位置"中能用的脚本,可以是sql文件、压缩文件、可执行文件。例如:

#!/usr/bin/env bash

# Import SQL
echo -n "=======IMPORT SQL DATA======="
createdb -U postgres test

psql -U postgres test < /docker-entrypoint-initdb.d/test.sql
echo "=======IMPORT SQL DONE======="

其他参考官方项目文档:https://hub.docker.com/_/postgres。

4、常用备份

4.1、导出数据库:

docker exec -it pg pg_dump -h localhost -U postgres 数据库名 >/data/dum.sql

4.2、导入数据库:

docker exec -i pg psql -U postgres 数据库名 < /data/dum.sql
posted @ 2019-10-27 10:36  Gin.p  阅读(1725)  评论(1编辑  收藏  举报