七千二百袋水泥
七千二百袋水泥
Published on 2025-10-25 / 3 Visits

使用Docker Compose部署Docspell文档管理系统:详细安装教程与常见问题解决指南

项目概述

Docspell是一款专为简化电子文档管理流程而设计的智能工具,其核心理念是让用户能够以最低的操作成本高效整理各类数字文档。该系统的突出功能涵盖自动化文档分类、OCR文字识别提取、全文内容检索、集成机器学习与自然语言处理技术,以及完善的多用户账户管理体系。

项目源代码地址

项目源码仓库位于:https://github.com/eikek/docspell

Docker Compose配置文件详解

name: docspell  
services:  
  restserver:  
    image: docker.1ms.run/docspell/restserver:latest  
    hostname: docspell-restserver  
    container_name: docspell-restserver  
    restart: unless-stopped  
    ports:  
      - "7880:7880"  
    environment:  
      TZ: 'Asia/Shanghai'  
      DOCSPELL_SERVER_INTERNAL__URL: 'http://docspell-restserver:7880'  
      DOCSPELL_SERVER_ADMIN__ENDPOINT_SECRET: 'admin123'  
      DOCSPELL_SERVER_AUTH_SERVER__SECRET: ''  
      DOCSPELL_SERVER_BACKEND_JDBC_PASSWORD: 'dbpass'  
      DOCSPELL_SERVER_BACKEND_JDBC_URL: 'jdbc:postgresql://db:5432/dbname'  
      DOCSPELL_SERVER_BACKEND_JDBC_USER: 'dbuser'  
      DOCSPELL_SERVER_BIND_ADDRESS: '0.0.0.0'  
      DOCSPELL_SERVER_FULL__TEXT__SEARCH_ENABLED: 'true'  
      DOCSPELL_SERVER_FULL__TEXT__SEARCH_SOLR_URL: 'http://docspell-solr:8983/solr/docspell'  
      DOCSPELL_SERVER_INTEGRATION__ENDPOINT_ENABLED: 'true'  
      DOCSPELL_SERVER_INTEGRATION__ENDPOINT_HTTP__HEADER_ENABLED: 'true'  
      DOCSPELL_SERVER_INTEGRATION__ENDPOINT_HTTP__HEADER_HEADER__VALUE: 'integration-password123'  
      DOCSPELL_SERVER_BACKEND_SIGNUP_MODE: 'open'  
      DOCSPELL_SERVER_BACKEND_SIGNUP_NEW__INVITE__PASSWORD: ''  
      DOCSPELL_SERVER_BACKEND_ADDONS_ENABLED: 'false'  

  joex:  
    image: docker.1ms.run/docspell/joex:latest  
    hostname: docspell-joex  
    container_name: docspell-joex  
    restart: unless-stopped  
    environment:  
      TZ: 'Asia/Shanghai'  
      DOCSPELL_JOEX_APP__ID: 'joex1'  
      DOCSPELL_JOEX_PERIODIC__SCHEDULER_NAME: 'joex1'  
      DOCSPELL_JOEX_SCHEDULER_NAME: 'joex1'  
      DOCSPELL_JOEX_BASE__URL: 'http://docspell-joex:7878'  
      DOCSPELL_JOEX_BIND_ADDRESS: '0.0.0.0'  
      DOCSPELL_JOEX_FULL__TEXT__SEARCH_ENABLED: 'true'  
      DOCSPELL_JOEX_FULL__TEXT__SEARCH_SOLR_URL: 'http://docspell-solr:8983/solr/docspell'  
      DOCSPELL_JOEX_JDBC_PASSWORD: 'dbpass'  
      DOCSPELL_JOEX_JDBC_URL: 'jdbc:postgresql://db:5432/dbname'  
      DOCSPELL_JOEX_JDBC_USER: 'dbuser'  
      DOCSPELL_JOEX_ADDONS_EXECUTOR__CONFIG_RUNNER: 'docker,trivial'  
      DOCSPELL_JOEX_CONVERT_HTML__CONVERTER: 'weasyprint'  
    ports:  
      - "7878:7878"  

  consumedir:  
    image: docker.1ms.run/docspell/dsc:latest  
    container_name: docspell-consumedir  
    command:  
      - dsc  
      - "-d"  
      - "http://docspell-restserver:7880"  
      - "watch"  
      - "--delete"  
      - "-ir"  
      - "--not-matches"  
      - "**/.*"  
      - "--header"  
      - "Docspell-Integration:integration-password123"  
      - "/opt/docs"  
    restart: unless-stopped  
    volumes:  
      - ./data/docs:/opt/docs  

  db:  
    image: docker.1ms.run/library/postgres:16.1  
    container_name: postgres_db  
    restart: unless-stopped  
    volumes:  
      - ./data/db:/var/lib/postgresql/data/  
    environment:  
      POSTGRES_USER: 'dbuser'  
      POSTGRES_PASSWORD: 'dbpass'  
      POSTGRES_DB: 'dbname'  

  solr:  
    image: docker.1ms.run/library/solr:9  
    container_name: docspell-solr  
    restart: unless-stopped  
    volumes:  
      - ./data/solr:/var/solr  
    command:  
      - bash  
      - -c  
      - 'precreate-core docspell; exec solr -f -Dsolr.modules=analysis-extras'  
    healthcheck:  
      test: ["CMD", "curl", "-f", "http://docspell-solr:8983/solr/docspell/admin/ping"]  
      interval: 1m  
      timeout: 10s  
      retries: 2  
      start_period: 30s  

volumes:  
  solr_data:  
    driver: local  
    driver_opts:  
       o: bind  
       type: none  
       device: ./data/solr

安装过程中常见问题与解决方案

配置注意事项

在Docker Compose配置文件中涉及多个服务端口,并且各容器之间通过容器名称进行内部通信,因此需要特别注意:

  • 如果需要修改默认端口号,必须确保将所有相关服务的端口配置同步更新
  • 假如计划更改容器名称,务必在所有出现相同容器名称的地方进行相应调整

镜像下载与存储空间

整套系统包含多个Docker镜像,由于集成了机器学习组件,总体镜像体积较为庞大,下载过程需要保持耐心等待。

配置文件中已经添加了Docker镜像加速地址docker.1ms.run,用户可以直接使用这个地址来提升下载速度。需要注意的是,这个公共加速器近期使用人数较多,可能会导致下载速度有所下降。

成功拉取后的各镜像占用空间情况如图所示:

Image

Solr搜索引擎容器启动异常

通过执行docker compose ps命令可以查看各个容器的运行状态,如果发现类似下图的错误提示:

Image

这种情况通常是由于Compose配置中指定的./data/solr目录权限设置不当所致,可以按照以下步骤进行修复:

# 首先停止所有运行中的容器
docker compose down -t 1
# 为Solr数据目录分配读写权限,确保容器内用户能够正常访问
sudo chmod 777 ./data/solr
sudo chmod 777 ./data/docs  # 同时为文档存储目录设置相同权限,避免后续出现类似问题
# 重新启动所有服务
docker compose up -d

等待约两分钟让系统完全启动后,再次检查容器状态,所有服务都应该显示为健康运行状态:

Image

用户注册后登录失败

完成账户注册后输入密码点击登录,系统反复提示认证失败,这种情况可能是注册时填写的信息不符合系统要求所致,具体界面如下:

Image

首次尝试注册时,如果CollectiveID与User Login字段填写内容不一致,或者设置的密码过于简单(如123456),虽然系统会显示注册成功,但实际无法正常登录。解决方法是清理数据后重新注册:

# 停止所有容器服务
docker compose down -t 1
# 删除原有的数据库文件
sudo rm -rf ./data/db  # 根据实际配置文件中的路径进行调整
# 重新启动系统
docker compose up -d

经过约两分钟的等待系统完全启动后,在注册页面确保CollectiveID和User Login字段填写相同内容(例如jfzui),密码设置为包含字母和数字的组合(如jfzui666),这样就能成功登录系统。具体是哪个修改步骤起了关键作用尚不确定,用户可以根据这个经验自行尝试调整。

系统使用总结与功能评价

Docspell提供了一系列强大的文档管理功能,特别是全文检索能力和自定义元数据支持非常实用。对于日常工作中需要处理大量客户往来文件的用户来说,这套系统能够有效实现文档的智能化整理。

不过目前系统对中文语言的支持存在一定限制,具体表现如下图所示:

Image