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

使用Docker/Celery/Celery-Beat执行dbbackup失败:找不到pg_dump

解决django-dbbackup执行database_backup时找不到pg_dump的问题

问题根源

pg_dump是PostgreSQL官方提供的数据库备份工具,你的Celery运行容器中没有安装PostgreSQL客户端套件,导致dbbackup调用该工具时找不到对应可执行文件。而媒体备份不需要依赖这类数据库工具,因此功能正常。

解决方案

1. 给Celery运行的Docker镜像安装PostgreSQL客户端

根据你使用的基础镜像类型,选择对应的安装命令:

基于Debian/Ubuntu的Python镜像(如python:slim)

在Celery服务的Dockerfile中添加以下安装步骤:

# 安装PostgreSQL客户端
RUN apt-get update && \
    apt-get install -y --no-install-recommends postgresql-client && \
    rm -rf /var/lib/apt/lists/*

基于Alpine的Python镜像(如python:alpine)

改用apk包管理器安装:

RUN apk add --no-cache postgresql-client

修改完成后重新构建Celery服务的镜像,更新容器。

2. (可选)指定pg_dump的绝对路径

如果安装后pg_dump的路径不是默认的/usr/bin/pg_dump,可以在Django的settings.py中明确配置:

DBBACKUP_CONNECTORS = {
    'default': {
        'ENGINE': 'dbbackup.db.postgresql',
        'DUMP_CMD': '/usr/bin/pg_dump',  # 替换为实际的pg_dump路径
    }
}

你可以进入Celery容器执行which pg_dump命令,获取准确的路径。

3. 验证修复效果

  • 进入Celery容器,测试pg_dump是否可正常运行:
    docker exec -it <你的celery容器名称> pg_dump --version
    
  • 手动触发数据库备份任务,确认错误消失:
    docker exec -it <你的celery容器名称> python manage.py dbbackup
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:10:30