
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
这是https://www.inetsoftware.de/products/clear-reports报表应用的预构建容器化版本。该容器仅包含应用程序及运行所需的工具。
容器不提供任何默认用户,您必须先使用“注册”方法。高级用例详见下文。
有关i-net Clear Reports的更多信息,请访问https://www.inetsoftware.de/products/clear-reports。
运行以下命令启动i-net Clear Reports服务器Docker容器:
bashdocker run -d -p 9000:9000 -e CONF_listener__port=9000 --name reporting docker.xuanyuan.run/inetsoftware/i-net-clear-reports
i-net Clear Reports Docker容器应使用配置属性文件或环境变量进行预配置。无论哪种方式,都应先创建具有特定设置的本地安装,通过维护模块创建配置备份,并以此备份中的配置属性文件为基础。
要使容器在启动时完全配置,至少需指定以下属性:CONF_listener__port和CONF_licensekey
在私有云环境中,还需设置CONF_serverURL属性。建议在其他环境中也设置此属性。
可通过卷或其他方式将指定配置添加到容器中以添加配置文件。可使用默认配置文件,或通过环境变量设置其他配置文件。详见环境属性矩阵。
创建环境变量名称需遵循以下规则:
CONF__为前缀.(点)替换为__(两个下划线)为使配置可重现和可更新,建议使用docker-compose.yml文件。
yamlversion: '2.1' services: reporting: image: 'docker.xuanyuan.run/inetsoftware/i-net-clear-reports: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/reporting/.i-net software/reporting_User_Default/backup
若有更具体的需求(如预填充用户数据库),应创建自定义容器。
使用以下compose示例可创建无权限限制的服务器,无需进一步身份验证即可通过公共URL上下文使用。
yamlversion: '2.1' services: reporting: image: 'docker.xuanyuan.run/inetsoftware/i-net-clear-reports:latest' restart: 'always' ports: # 不设置主机端口允许使用--scale,但外部端口会变化 - 9000/tcp environment: # 在云持久化环境中必须使用System/Default配置 - DEFAULT_CONFIG=System/Default # 设置许可证密钥(取消注释并插入完整许可证密钥) #- CONF_licensekey=... # 在预定义端口上运行应用以方便映射 - CONF_listener__port=9000 # 仅激活访客账户,激活webapi - CONF_authentication__settings=[{"provider":"guest"}] - CONF_plugins__activated={"webapi.core":true}
以下Dockerfile将在新容器中创建用户admin,密码为password。
DockerfileFROM docker.xuanyuan.run/inetsoftware/i-net-clear-reports # 切换到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/reporting" # 切换回产品用户 USER reporting
若要使容器数据在重启后持久化(例如用于新容器版本),应挂载卷。
持久化和配置位于产品用户的主文件夹中。应使用以下附加选项挂载此文件夹:
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等字体。添加额外字体(如许可受限的Microsoft字体Arial)需构建自定义容器。可使用以下Dockerfile作为基础。
Dockerfile############################################################################# # 准备产品 # 注意:由于较新版本alpine的问题,使用alpine 3.12! FROM docker.xuanyuan.run/alpine:3.12 as builder RUN apk add --update msttcorefonts-installer \ && update-ms-fonts FROM docker.xuanyuan.run/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=<持久化URI> # MongoDB inet_persistence=mongodb://(<用户名>:<密码>@)<MongoDB服务器>/<数据库>
若平台通过环境变量提供这些URI,需相应转发。
由于配置存储在持久化中,可能需要在容器每次启动时将应用端口设为特定值(如Heroku提供环境变量)。此端口需通过环境变量inet_http_port或inet_https_port设置。
要使用Docker Compose将docker容器与MongoDB持久化捆绑,以下docker-compose.yml脚本可作为起点:
yamlversion: '2.1' services: reporting: image: 'docker.xuanyuan.run/inetsoftware/i-net-clear-reports: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/reporting mongo: image: docker.xuanyuan.run/mongo environment: MONGO_INITDB_ROOT_PASSWORD: example MONGO_INITDB_ROOT_USERNAME: root restart: always
应将FORCE_IMPORT_CONFIG设为0,使配置仅导入一次而非每次容器启动时导入。这样配置可在后续重启或扩展环境中持久化和重用。
根据具体环境可能需要设置更多选项。详见环境属性矩阵。
要在多个服务器节点间分配计算负载,可创建负载均衡环境。需注意每个节点同时作为前端和后端服务器。节点可共享数据持久化(使用MongoDB设置),使比较在节点间可用。
负载均衡器(如HAProxy)需支持某种粘性会话,确保登录用户始终定向到同一节点。
对于HAProxy,可使用balance hdr(Cookie)设置。要展示使用HAProxy的i-net Clear Reports设置,参见https://github.com/i-net-software/clear-reports-haproxy-example。
额外插件可在自定义Dockerfile构建期间或容器启动时添加。两种情况下均可使用容器的install-plugin命令:
bash/usr/share/product $ install-plugin --help 用法 安装所有插件: /bin/install-plugin -p <产品> -v <版本> 用法 安装指定插件: /bin/install-plugin -p <产品> -v <版本> <要安装的插件列表> 用法 安装BETA插件: /bin/install-plugin -p <产品> -v <版本> -b <要安装的插件列表> 用法 安装额外持久化: /bin/install-plugin -s <类型>
插件名称可从插件商店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命令。
示例不完整,需定义特定容器。
若服务无响应但容器仍可访问,可终止并重启服务器子进程,无需重启整个容器。此时,用户需通过shell进入容器并运行以下命令:
bashps xo pid,command | grep exitcode | grep -v grep | awk '{print $1}' | xargs -r kill -TERM
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务