本文档解释了如何使用 Docker 部署 Stirling-PDF。它涵盖了可用的 Docker 镜像变体、部署方法、配置选项和最佳实践。有关本地安装 Stirling-PDF 的信息,请参阅本地安装。
Stirling-PDF 提供三种不同的 Docker 镜像变体,以满足不同的需求和硬件限制。
来源:.github/workflows/push-docker.yml92-103 .github/workflows/push-docker.yml137-151 .github/workflows/push-docker.yml168-183
| 功能 | 常规 | 超轻量版 | 完整版 |
|---|---|---|---|
| 核心 PDF 操作 | ✅ | ✅ | ✅ |
| OCR 功能 | ✅ | ❌ | ✅ |
| 文档转换 | ✅ | ❌ | ✅ |
| 镜像大小 | 中等 | 最小 | 最大 |
| 资源使用 | 中等 | 低 | 高 |
| 高级功能 | 部分 | 最小 | 完整版 |
来源:.github/workflows/push-docker.yml92-183 Dockerfile1-96
Stirling-PDF Docker 镜像遵循特定的标记约定
来源:.github/workflows/push-docker.yml78-89 .github/workflows/push-docker.yml124-165
要使用 Docker 部署常规 Stirling-PDF 镜像,请运行
创建一个 docker-compose.yml 文件
然后运行
来源:.github/workflows/testdriver.yml66-90
Stirling-PDF 支持各种环境变量来自定义其行为
来源:Dockerfile26-37 .github/workflows/testdriver.yml78-88 scripts/init.sh16-29
| 可变 | 描述 | 默认值 | 示例 |
|---|---|---|---|
DOCKER_ENABLE_SECURITY | 启用认证 | false | true |
SYSTEM_DEFAULTLOCALE | 默认 UI 语言 | en-GB | fr-FR |
SYSTEM_MAXFILESIZE | 最大文件大小(MB) | 100 | 500 |
TESSERACT_LANGS | 额外的 OCR 语言 | - | deu,fra,ita |
PUID | 容器用户的用户 ID | 1000 | 1001 |
PGID | 容器用户的组 ID | 1000 | 1001 |
来源:Dockerfile26-37 .github/workflows/testdriver.yml78-88
建议使用以下卷挂载以实现数据持久性
| 容器路径 | 目的 |
|---|---|
/configs | 配置文件和设置 |
/logs | 应用程序日志 |
/usr/share/tessdata | 自定义 OCR 语言数据 |
/customFiles | 应用程序使用的自定义文件 |
/pipeline | 流水线配置和文件 |
来源:Dockerfile82 .github/workflows/testdriver.yml74-76
要启用用户认证和安全功能
当 DOCKER_ENABLE_SECURITY 设置为 true 时,容器将下载并使用启用安全功能的应用程序版本。
来源:scripts/download-security-jar.sh1-21 .github/workflows/releaseArtifacts.yml42-46
常规镜像和完整镜像默认包含英语 OCR 支持。可以添加其他语言
这将在容器初始化期间安装德语、法语和意大利语 OCR 语言包。
来源:scripts/init.sh16-29 Dockerfile64-68
您可以自定义 Java 运行时选项
容器将这些选项与 JAVA_BASE_OPTS 中设置的默认 JVM 选项结合使用。
来源:Dockerfile28 scripts/init-without-ocr.sh1-4
硬件要求因镜像变体和使用模式而异
| 镜像变体 | 最低内存 | 推荐内存 | CPU 核心数 | 磁盘空间 |
|---|---|---|---|---|
| 超轻量版 | 512MB | 1GB | 1 | 500MB |
| 常规 | 1GB | 2GB | 2 | 1GB |
| 完整版 | 2GB | 4GB | 4 | 2GB |
升级到更新版本的 Stirling-PDF
拉取最新镜像
停止并移除现有容器
使用相同配置启动新容器
如果使用 Docker Compose
Docker 容器在启动时会执行多项初始化任务
来源:scripts/init.sh1-31 scripts/init-without-ocr.sh1-41 scripts/download-security-jar.sh1-22
Docker 容器配置了优化的 JVM 设置来控制内存使用
-XX:MaxRAMPercentage=75)来源:Dockerfile28
适用于资源有限的服务器
适用于所有功能的生产环境
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 容器立即退出 | 卷挂载权限不足 | 检查挂载卷的所有权 |
| 内存不足错误 | 内存分配不足 | 调整 JAVA_CUSTOM_OPTS 以限制内存使用 |
| OCR 不工作 | 缺少语言包 | 设置 TESSERACT_LANGS 环境变量 |
| 登录不工作 | 安全 JAR 未下载 | 检查网络连接和版本标签 |
检查容器日志以进行故障排除