本镜像为i-net PDFC Server的预构建容器化版本,仅包含应用程序及运行所需工具。镜像不提供默认用户,首次使用需通过“Sign Up”功能创建用户。更多信息请访问i-net PDFC Server官网。
运行以下命令启动i-net PDFC Server容器:
bashdocker run -d -p 9000:9000 -e CONF_listener__port=9000 --name pdfc inetsoftware/i-net-pdfc-server
i-net PDFC Server容器可通过配置属性文件或环境变量进行预设配置。建议先在本地安装并配置,通过维护模块创建配置备份,以备份中的配置属性文件为基础进行自定义。
启动容器时需至少指定以下属性:CONF_listener__port(端口)和CONF_licensekey(许可证密钥)。私有云环境还需设置CONF_serverURL,其他环境也建议配置此属性。
可通过卷挂载或其他方式将指定配置添加到容器中。可使用默认配置文件,或通过环境变量指定自定义配置文件。详见环境变量矩阵。
环境变量命名规则:
CONF__.(点)替换为__(两个下划线)为确保配置可重现和更新,建议使用docker-compose.yml文件。
yamlversion: '2.1' services: pdfc: image: 'inetsoftware/i-net-pdfc-server:latest' restart: 'always' ports: - 9000:9000 environment: - DEFAULT_PROPFILE=/tmp/defaultConfiguration.properties - DEFAULT_CONFIG=User/Default # 设置外部可访问的服务器URL(取消注释并填入正确URL) #- CONF_serverURL=https://hostname.company.com:9443/ # 设置许可证密钥(取消注释并填入完整密钥) #- CONF_licensekey=... # 运行在指定端口以便映射 - CONF_listener__port=9000 # 自定义主题颜色 - CONF_theme__themecolors={"@base-color":"#0a89dd","@primary-color":"#42a7ca"} # 启用日志,输出到容器日志文件 - CONF_log__engine=true - CONF_log__file=/dev/stdout # 自动备份位置 - CONF_BackupLocation=/home/cowork/.i-net software/pdfc_User_Default/backup
如需特定需求(如预填充用户数据库),可创建自定义容器。
以下compose示例创建无需权限限制的服务器,可通过公共URL上下文直接使用,无需身份验证:
yamlversion: '2.1' services: pdfc: image: 'inetsoftware/i-net-pdfc-server:latest' restart: 'always' ports: # 不指定主机端口允许使用--scale扩展,但外部端口会变化 - 9000/tcp environment: # 云持久化环境必须使用System/Default配置 - DEFAULT_CONFIG=System/Default # 设置许可证密钥(取消注释并填入完整密钥) #- CONF_licensekey=... # 运行在指定端口以便映射 - CONF_listener__port=9000 # 仅启用访客账户,激活webapi和comparison.api - CONF_authentication__settings=[{"provider":"guest"}] - CONF_plugins__activated={"webapi.core":true,"comparison.api":true}
以下Dockerfile创建包含用户admin(密码password)的新容器:
DockerfileFROM inetsoftware/i-net-pdfc-server # 切换到root用户进行安装 USER root # 安装工具 RUN apk add --update linux-pam # 授予所有人PAM权限,创建登录用户 RUN chmod +r /etc/shadow \ && adduser -D -g "User" admin \ && echo admin:password | chpasswd \ && ln -s "/etc/pam.d/base-password" "/etc/pam.d/pdfc" # 启用系统登录(默认PAM插件已禁用) ENV CONF_authentication__settings="[{'provider':'system'},{'provider':'product','userCanRegister':'true'}]" ENV CONF_plugins__activated="{}" # 切换回产品用户 USER pdfc
i-net PDFC Server通过Tesseract库实现OCR功能,需创建安装Tesseract的自定义容器:
Dockerfile# 基于i-net PDFC基础镜像构建 FROM inetsoftware/i-net-pdfc-server # 切换到root用户进行安装 USER root RUN set -x \ && apk add --update tesseract-ocr # Tesseract需要此环境变量 ENV LC_ALL=C # 切换回产品用户 USER pdfc
如需容器重启后保留数据(如升级容器版本),建议挂载卷。配置和持久化数据位于产品用户的主目录下,可通过以下选项挂载:
bash-v /folder/to/mount/from:/home/$PRODUCT -e FORCE_IMPORT_CONFIG=0
-v /folder/to/mount/from:/home/$PRODUCT:将主机目录挂载到产品用户主目录-e FORCE_IMPORT_CONFIG=0:指定不覆盖已存在的挂载配置$PRODUCT变量取决于产品,可能值为:reporting、pdfc、cowork、helpdesk。
默认容器预装DejaVu等字体。如需添加受许可限制的字体(如微软Arial),需构建自定义容器。以下Dockerfile为基础示例:
Dockerfile############################################################################# # 准备产品环境 # 注意:由于新版本alpine的问题,使用alpine 3.12 FROM alpine:3.12 as builder RUN apk add --update msttcorefonts-installer \ && update-ms-fonts FROM inetsoftware/i-net-<PRODUCT>:<TAG> USER "root" # 从中间构建阶段复制字体 COPY --from=builder /usr/share/fonts/truetype/msttcorefonts /usr/share/fonts/truetype/msttcorefonts # 为产品用户更新字体缓存 USER $PRODUCT RUN fc-cache -fv /usr/share/fonts
| 属性名称 | 默认值 | 描述 |
|---|---|---|
DEFAULT_PROPFILE | /tmp/defaultConfiguration.properties | 初始设置使用的配置属性文件 |
DEFAULT_CONFIG | User/Default | 服务器启动时使用的配置 |
FORCE_IMPORT_CONFIG | 1 | 强制导入配置,覆盖已存在的配置。挂载配置时需设为0 |
DOCKER_ENTRYPOINT_SCRIPT | 启动服务器前运行的额外内联脚本 | |
CONF_systempermission__enabled | false | 系统权限默认禁用,即任何登录用户可访问系统所有功能。建议与认证设置一起自定义。 |
CONF_authentication__settings | [{'provider':'product','userCanRegister':'true'}] | 默认启用产品登录,允许创建新用户。生产环境应自定义此配置。 |
CONF_plugins__activated | {'authentication.pam':false} | PAM认证插件默认禁用(需创建自定义容器才能使用)。仅需将可选插件设为true启用;禁用非可选插件需设为false。 |
CONF_prop__name | 服务器初始化配置属性。prop__name由实际配置属性prop.name转换而来(可从之前的备份中获取)。 | |
inet_http_port | 覆盖配置中的默认HTTP端口,适用于共享云持久化环境 | |
inet_https_port | 覆盖配置中的默认HTTPS端口,适用于共享云持久化环境 | |
inet_persistence | 持久化存储URI,目前仅支持MongoDB。未设置时使用文件持久化。 |
无硬盘或文件系统可能随服务器实例消失的场景下,建议使用MongoDB持久化。技术细节详见文档。
通过环境变量inet_persistence配置持久化:
bashinet_persistence=<PERSISTENCE URI> # MongoDB示例 inet_persistence=mongodb://(<USERNAME>:<PASSWORD>@)<MONGODB SERVER>/<DATABASE>
如平台通过环境变量提供上述URI,需相应转发。
由于配置存储在持久化中,容器启动时可能需固定应用端口(如Heroku提供环境变量指定端口),通过inet_http_port或inet_https_port设置。
以下docker-compose.yml可作为MongoDB持久化部署的起点:
yamlversion: '2.1' services: pdfc: image: 'inetsoftware/i-net-pdfc-server:latest' restart: 'always' ports: # 不指定主机端口允许使用--scale扩展,但外部端口会变化 - 9000/tcp environment: # 云持久化环境必须使用System/Default配置 - DEFAULT_CONFIG=System/Default # 设置外部可访问的服务器URL(取消注释并填入正确URL) #- CONF_serverURL=https://hostname.company.com:9443/ # 设置许可证密钥(取消注释并填入完整密钥) #- CONF_licensekey=... # 运行在指定端口以便映射 - CONF_listener__port=9000 # 不强制覆盖已导入的配置(避免同一MongoDB的其他实例配置被修改) - FORCE_IMPORT_CONFIG=0 # 配置MongoDB持久化连接 - inet_persistence=mongodb://root:example@mongo:27017/pdfc mongo: image: mongo environment: MONGO_INITDB_ROOT_PASSWORD: example MONGO_INITDB_ROOT_USERNAME: root restart: always
FORCE_IMPORT_CONFIG应设为0,确保配置仅导入一次,以便在后续重启或扩展环境中重用。具体环境可能需设置更多选项,详见环境变量矩阵。
可通过负载均衡环境分发计算负载,每个节点同时作为前端和后端服务器。节点可通过MongoDB共享数据持久化,确保比较结果跨节点可用。
负载均衡器(如HAProxy)需支持粘性会话(sticky sessions),以确保登录用户始终定向到同一节点。
HAProxy可使用balance hdr(Cookie)配置。i-net PDFC与HAProxy的配置示例详见http://github.com/i-net-software/pdfc-haproxy-example%E3%80%82
可通过自定义Dockerfile构建或容器启动时动态安装额外插件。两种方式均使用容器的install-plugin命令:
bash/usr/share/product $ install-plugin --help Usage install all Plugins: /bin/install-plugin -p <product> -v <version> Usage install defined plugins: /bin/install-plugin -p <product> -v <version> <list of plugins to install> Usage install BETA Plugins: /bin/install-plugin -p <product> -v <version> -b <list of plugins to install> Usage install additional persistence: /bin/install-plugin -s <type>
插件名称可从插件商店URL的/pid后路径获取,例如:https://store.inetsoftware.de/pid/webapi.core → webapi.core。
不同持久化类型有专用容器:默认容器(无额外标签)已安装MongoDB持久化,其他可用持久化类型包括:mongodb、cosmosdb、dynamodb。
在Dockerfile中添加以下行安装插件:
Dockerfile# 安装Web API插件 RUN install-plugin web.api
在docker-compose.yml中通过命令安装插件:
yamlversion: '2.1' services: service: command: > sh -c " install-plugin web.api && ./startServer.sh -Dclearreports.config=User/Default -Dsetupautoexecution=true "
可通过docker inspect查看运行中容器的原始startServer.sh命令。示例为简化版,需补充具体容器定义。
当服务无响应但容器仍可访问时,可在容器内终止并重启服务器子进程,无需重启整个容器。操作步骤:进入容器终端,执行以下命令:
bashps xo pid,command | grep exitcode | grep -v grep | awk '{print $1}' | xargs -r kill -TERM

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务