You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Postgres:13-alpine镜像中安装pg_cron扩展并配置?

解决Postgres 13-alpine镜像安装pg_cron扩展的问题

1. 自定义Postgres镜像(编译安装pg_cron)

官方postgres:13-alpine镜像未预装pg_cron,需要自定义镜像编译安装。创建名为postgres-with-pgcron.Dockerfile的文件,内容如下:

FROM postgres:13-alpine

# 安装编译依赖与Postgres开发包
RUN apk add --no-cache --virtual .build-deps \
    gcc \
    musl-dev \
    postgresql-dev \
    git \
    make \
    # 克隆pg_cron源码并切换至适配Postgres 13的版本
    && git clone https://github.com/citusdata/pg_cron.git \
    && cd pg_cron \
    && git checkout v1.3.1 \
    && make \
    && make install \
    # 清理编译依赖与源码,缩小镜像体积
    && cd .. \
    && rm -rf pg_cron \
    && apk del .build-deps

# 将pg_cron配置写入Postgres默认配置模板
RUN echo "shared_preload_libraries = 'pg_cron'" >> /usr/local/share/postgresql/postgresql.conf.sample \
    && echo "cron.database_name = 'db'" >> /usr/local/share/postgresql/postgresql.conf.sample

注意:cron.database_name需设置为你实际使用的数据库名(即docker-compose中定义的db),确保pg_cron能自动关联目标库。

2. 修改docker-compose.yml配置

替换官方Postgres镜像为自定义构建的镜像,并补充必要配置:

version: '3'
services:

  postgres:
    # 使用自定义Dockerfile构建镜像
    build:
      context: .
      dockerfile: postgres-with-pgcron.Dockerfile
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pwd
      POSTGRES_DB: db
    volumes:
      - postgresdata:/var/lib/postgresql/data
    # 指定加载包含pg_cron配置的文件
    command: ["postgres", "-c", "config_file=/usr/local/share/postgresql/postgresql.conf"]

  app:
    # 使用你原有的Java应用Dockerfile构建
    build: .
    ports:
      - "8080:8080"
    depends_on:
      - postgres
    environment:
      SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/db
      SPRING_DATASOURCE_USERNAME: user
      SPRING_DATASOURCE_PASSWORD: pwd

volumes:
    postgresdata:

3. 初始化pg_cron扩展

容器启动后,在目标数据库中执行以下SQL创建扩展(可集成到Liquibase变更集或手动执行):

CREATE EXTENSION pg_cron;

验证安装

进入Postgres容器执行命令:

docker exec -it <你的postgres容器名> psql -U user -d db

执行查询验证扩展状态:

SELECT * FROM pg_extension WHERE extname = 'pg_cron';

若返回结果,说明pg_cron已成功安装并可用。


内容的提问来源于stack exchange,提问作者ah_ben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 14:15:41