2 postgres安装
Pan Qiancheng edited this page 2025-12-31 14:16:45 +08:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

使用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;