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
如果帮到你的话,就赞我一下呗^_^