Docker安装wiki.js 使用PostgresQL

2,238 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

wiki.js

wiki.js 使用 postgres 支持中文全文检索

镜像

用DockerHub的镜像快一点

hub.docker.com/r/requarks/…

docker pull requarks/wiki

PG数据库

先装上pg

docker run --name wiki_postgres -v pgdata:/var/lib/postgresql/data -e POSTGRES_PASSWORD=wikijsrocks -e POSTGRES_DB=wiki -e POSTGRES_USER=wikijs -p 5432:5432 --network wiki --network-alias wiki_postgres -d postgres:latest

支持中文搜索的PG

hub.docker.com/r/abcfy2/zh…

docker run --name wiki_postgres -v pgdata:/var/lib/postgresql/data -e POSTGRES_PASSWORD=wikijsrocks -e POSTGRES_DB=wiki -e POSTGRES_USER=wikijs -p 5432:5432 --network wiki --network-alias wiki_postgres -d abcfy2/zhparser

启动容器后进入容器


su - postgres

psql -U wikijs -d wiki

-- <https://docs.requarks.io/en/search/postgres>
CREATE EXTENSION pg_trgm;

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

-- [二、PostgerSQL全文检索系统之中文支持_jjj的博客-CSDN博客](
-- <https://blog.csdn.net/weixin_40746796/article/details/89209316>
-- )
-- 忽略标点影响
ALTER ROLE wikijs SET zhparser.punctuation_ignore = ON;
-- 短词复合
ALTER ROLE wikijs SET zhparser.multi_short = ON;

-- 看看 chinese_zh 在不在
\dF
-- 测试一下
select ts_debug('chinese_zh', '白垩纪是地球上海陆分布和生物界急剧变化、火山活动频繁的时代');

重启容器,打开 wiki.js 管理 | 搜索引擎 | Database - PostgreSQL | Dictionary Language 选 chinese_zh

还要修改pg内的记录?

上面同样的进去

\l 查看数据库

\c wiki 进入数据库

select * from "searchEngines”

图片.png

已经有了

初始化

新建用户

配置

然后 写配置文件/root/wiki.js/config.yaml

raw.githubusercontent.com/requarks/wi…

要修改配置文件 (用上面起的pg就不用了)

网络

但是需要修改数据库的IP地址(localhost不行 指向的是容器内的 要指向PG的)

PG的容器暴露在本机了,要访问的话就需要使用WIKI容器的网关地址(172.17.0.1)或者PG的IP地址(172.17.0.4)

或者直接将两个容器加入同一个网络(bridge),给PG的网络设置别名

docker network connect --alias wiki_postgres wiki wiki_postgres

(wiki_postgres是网络别名 wiki是网络名 第三个是容器名)

启动

docker run -d -p 8089:3000 --name wiki --restart unless-stopped -v /root/wiki.js/config.yaml:/wiki/config.yml requarks/wiki:2

添加网络别名启动

 docker run -d -p 8089:3000 --name wiki --restart unless-stopped -v /root/wiki.js/config.yaml:/wiki/config.yml --network wiki --network-alias wikijs requarks/wiki:2 

Docker File

  • Docker Compose的也可以 (没用上 要装Docker Compose)

    version: "3"
    services:
    
      db:
        image: postgres:11-alpine
        environment:
          POSTGRES_DB: wiki
          POSTGRES_PASSWORD: wikijsrocks
          POSTGRES_USER: wikijs
        logging:
          driver: "none"
        restart: unless-stopped
        volumes:
          - db-data:/var/lib/postgresql/data
    
      wiki:
        image: ghcr.io/requarks/wiki:2
        depends_on:
          - db
        environment:
          DB_TYPE: postgres
          DB_HOST: db
          DB_PORT: 5432
          DB_USER: wikijs
          DB_PASS: wikijsrocks
          DB_NAME: wiki
        restart: unless-stopped
        ports:
          - "80:3000"
    
    volumes:
      db-data:
    

中文

设置里面弄