本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
本镜像是一个轻量级微服务,专注于文档格式转换和缩略图生成功能。基于 Alpine Linux 构建,集成 LibreOffice 和 ImageMagick 作为核心处理引擎,提供高效、稳定的文档转换与图像处理能力。镜像设计遵循微服务架构原则,支持通过 REST API 接口进行交互,适用于各类需要文件预览、格式统一的应用场景。
多格式文档转换
支持输入格式:PDF、DOCX、DOC、PPTX、PPT、XLSX、TXT、HTML 等
支持输出格式:PDF、PNG、JPG、HTML、TXT 等
缩略图生成
自定义尺寸(如 128x128、256x256)、输出格式(PNG/JPG)及图像质量(0-100%)
支持按比例缩放、裁剪、水印添加等高级处理
批量处理能力
支持目录级批量文档转换和缩略图生成,支持通过 API 提交批量任务
REST API 接口
提供标准化 HTTP 接口,支持同步/异步任务提交、任务状态查询、结果获取
异步任务处理
支持任务队列机制,通过 Redis 实现任务分发与状态跟踪,避免长耗时任务阻塞
错误处理与日志
完善的错误码机制(如格式不支持、文件损坏、处理超时),详细日志记录任务生命周期
从 Docker Hub 拉取最新版本镜像:
docker pull doc-converter-thumbnailer:latest
如需指定版本,替换 latest 为具体版本号(如 v1.2.0)。
docker run -d \ --name doc-service \ -p 8080:8080 \ -v ./input:/app/input \ -v ./output:/app/output \ doc-converter-thumbnailer:latest
-p 8080:8080:映射 API 服务端口(容器内默认 8080)-v ./input:/app/input:挂载本地输入目录(存放待处理文件)-v ./output:/app/output:挂载本地输出目录(存放转换结果和缩略图)通过环境变量调整核心参数:
docker run -d \ --name doc-service \ -p 8080:8080 \ -v ./input:/app/input \ -v ./output:/app/output \ -v ./logs:/app/logs \ -e API_PORT=8080 \ -e THUMBNAIL_SIZE=200x200 \ -e CONVERSION_TIMEOUT=300 \ -e LOG_LEVEL=INFO \ -e REDIS_URL=redis://redis:6379 \ doc-converter-thumbnailer:latest
适用于生产环境的完整部署(含 Redis 任务队列):
version: '3.8' services: doc-service: image: doc-converter-thumbnailer:latest container_name: doc-service restart: always ports: - "8080:8080" volumes: - ./input:/app/input:rw - ./output:/app/output:rw - ./logs:/app/logs:rw environment: - API_PORT=8080 # API服务端口 - INPUT_DIR=/app/input # 输入文件目录(需挂载) - OUTPUT_DIR=/app/output # 输出文件目录(需挂载) - THUMBNAIL_SIZE=200x200 # 缩略图默认尺寸(宽x高) - THUMBNAIL_FORMAT=png # 缩略图输出格式(png/jpg) - CONVERSION_TIMEOUT=300 # 文档转换超时时间(秒) - MAX_CONCURRENT_TASKS=5 # 最大并发任务数 - LOG_LEVEL=INFO # 日志级别(DEBUG/INFO/WARN/ERROR) - LOG_DIR=/app/logs # 日志文件目录(需挂载) - REDIS_URL=redis://redis:6379 # Redis地址(用于任务队列) - REDIS_DB=0 # Redis数据库编号 depends_on: - redis redis: image: redis:alpine container_name: doc-service-redis restart: always volumes: - redis-data:/data volumes: redis-data: # 持久化Redis数据
| 环境变量名 | 默认值 | 说明 |
|---|---|---|
API_PORT | 8080 | API服务监听端口 |
INPUT_DIR | /app/input | 输入文件存放目录(需通过-v挂载宿主机目录,否则容器重启后文件丢失) |
OUTPUT_DIR | /app/output | 输出文件(转换结果、缩略图)存放目录 |
THUMBNAIL_SIZE | 200x200 | 缩略图默认尺寸,格式为宽x高(如128x128),超出尺寸自动等比缩放 |
THUMBNAIL_FORMAT | png | 缩略图输出格式,支持png/jpg |
THUMBNAIL_QUALITY | 85 | 缩略图质量(仅jpg格式有效),取值范围0-100,值越高质量越好 |
CONVERSION_TIMEOUT | 300 | 单个文档转换任务超时时间(秒),超时任务将标记为失败 |
MAX_CONCURRENT_TASKS | 5 | 最大并发任务数,避免资源过度占用 |
LOG_LEVEL | INFO | 日志级别,支持DEBUG(详细调试信息)/INFO(常规日志)/WARN/ERROR |
LOG_DIR | /app/logs | 日志文件存放目录,如不挂载则日志仅输出到stdout |
REDIS_URL | redis://localhost:6379 | Redis连接地址(用于异步任务队列),格式为redis://<host>:<port> |
REDIS_DB | 0 | Redis数据库编号 |
服务提供 RESTful API,支持任务提交、状态查询和结果获取。
POST /api/v1/convert{ "inputPath": "example.docx", // 输入文件名(需预先上传至INPUT_DIR目录) "outputFormat": "pdf", // 目标转换格式(如pdf/html/png),若为图片格式则生成缩略图 "thumbnail": true // 是否同时生成缩略图(仅当outputFormat为图片格式时有效) }
{ "taskId": "task-123456", // 任务唯一ID "status": "pending", // 任务状态(pending/running/success/failed) "message": "任务已提交至队列" }
GET /api/v1/tasks/{taskId}{ "taskId": "task-123456", "status": "success", "inputPath": "example.docx", "outputPath": "example.pdf", // 输出文件路径(相对于OUTPUT_DIR) "thumbnailPath": "example_thumb.png", // 缩略图路径(若thumbnail=true) "duration": 12.3, // 任务耗时(秒) "createdAt": "2024-05-20T10:30:00Z", "completedAt": "2024-05-20T10:30:12Z" }
为避免容器重启后输入文件、输出结果和日志丢失,需通过-v参数挂载宿主机目录:
./input:/app/input,确保待处理文件可被容器访问./output:/app/output,保存转换结果和缩略图./logs:/app/logs,持久化日志文件(建议配合日志轮转工具如logrotate使用)stdout(容器日志)和LOG_DIR目录下的文件(如app-20240520.log)以下配置适用于生产环境,包含资源限制、健康检查和日志驱动:
version: '3.8' services: doc-service: image: doc-converter-thumbnailer:latest container_name: doc-service restart: always ports: - "8080:8080" volumes: - /data/doc-input:/app/input:rw - /data/doc-output:/app/output:rw - /var/log/doc-service:/app/logs:rw environment: - API_PORT=8080 - INPUT_DIR=/app/input - OUTPUT_DIR=/app/output - THUMBNAIL_SIZE=256x256 - MAX_CONCURRENT_TASKS=10 - LOG_LEVEL=INFO - REDIS_URL=redis://redis:6379 deploy: resources: limits: cpus: '2' # 限制CPU使用不超过2核 memory: 2G # 限制内存使用不超过2GB healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/api/v1/health"] # 健康检查端点 interval: 30s timeout: 10s retries: 3 logging: driver: "json-file" options: max-size: "10m" # 单个日志文件最大10MB max-file: "5" # 保留最近5个日志文件 redis: image: redis:alpine container_name: doc-redis restart: always volumes: - redis-data:/data deploy: resources: limits: cpus: '0.5' memory: 512M volumes: redis-data:
通过增加服务实例数量实现负载均衡,需确保:
INPUT_DIR和OUTPUT_DIR(通过NFS或分布式存储如MinIO实现)docker service create \ --name doc-service \ --replicas 3 \ --publish 8080:8080 \ --mount type=bind,source=/data/doc-input,target=/app/input \ --mount type=bind,source=/data/doc-output,target=/app/output \ -e REDIS_URL=redis://redis:6379 \ doc-converter-thumbnailer:latest
www-data,UID=33)对挂载目录有读写权限,可通过chmod 775 /data/doc-input调整MAX_CONCURRENT_TASKS和资源限制免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429