使用docker:
FROM postgis/postgis:16-3.4
# 第一步:配置源
RUN if [ -f /etc/apt/sources.list ]; then \
sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list && \
sed -i 's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list; \
fi && \
if [ -f /etc/apt/sources.list.d/debian.sources ]; then \
sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list.d/debian.sources && \
sed -i 's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list.d/debian.sources; \
fi
# 第二步:安装依赖(这一层会被缓存)
RUN apt-get update && apt-get install -y \
build-essential \
postgresql-server-dev-16 \
git \
wget \
ca-certificates \
clang-13 \
llvm-13 \
&& rm -rf /var/lib/apt/lists/*
# 第三步:配置 git
RUN git config --global http.postBuffer 524288000
# 第四步:下载 SCWS(使用国内可访问的源)
WORKDIR /tmp
RUN wget -t 3 --timeout=60 http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2
# 第五步:解压并编译安装 SCWS
RUN if [ -f scws-1.2.3.tar.bz2 ]; then \
tar xjf scws-1.2.3.tar.bz2 && cd scws-1.2.3; \
else \
tar xzf scws-1.2.3.tar.gz && cd scws-1.2.3; \
fi \
&& ./configure \
&& make \
&& make install
# 第六步:清理 SCWS 源码
RUN rm -rf /tmp/scws-*
# 第七步:克隆 zhparser
RUN git clone --depth 1 https://bgithub.xyz/amutu/zhparser.git /tmp/zhparser
# 第八步:编译安装 zhparser
RUN cd /tmp/zhparser \
&& make \
&& make install
# 第九步:清理 zhparser 源码
RUN rm -rf /tmp/zhparser
# 第十步:清理编译工具
RUN apt-get purge -y build-essential git wget clang-13 llvm-13 \
&& apt-get autoremove -y \
&& apt-get clean
WORKDIR /
version: "3.9"
services:
postgres:
build:
context: .
dockerfile: Dockerfile.postgres
image: postgres-postgis-zhparser:16 # 自定义镜像名
container_name: postgres
restart: unless-stopped
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: app_db
TZ: Asia/Shanghai
ports:
- "5432:5432"
volumes:
- ./pgdata:/var/lib/postgresql/data
构建容器:
docker compose -f docker-compose.postgres.yml build
···
启动容器:
```bash
docker compose -f docker-compose.postgres.yml up -d
配置插件:
- 进入容器命令行
docker exec -it postgres psql -U postgres -d {你的数据库名字}
- 配置插件:
CREATE EXTENSION IF NOT EXISTS postgis;
CREATE EXTENSION IF NOT EXISTS zhparser;
CREATE TEXT SEARCH CONFIGURATION chinese (PARSER = zhparser);
ALTER TEXT SEARCH CONFIGURATION chinese ADD MAPPING FOR n,v,a,i,e,l WITH simple;