
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Yellowfin应用程序专用镜像仅包含Yellowfin应用程序,可连接到现有仓库数据库。该镜像可用作单实例部署或集群节点,适用于生产环境。由于数据持久化存储在外部仓库中,容器关闭时不会导致数据丢失。
通过修改DockerFile,可根据特定自定义部署需求调整镜像。构建Docker镜像所需的DockerFile及其他资源可在GitHub获取:https://github.com/YellowfinBI/Docker
构建Yellowfin应用程序专用镜像时,当前目录需存在Yellowfin JAR安装程序,并命名为yellowfin-installer.jar。
执行以下命令创建镜像:
bashdocker build . -t yellowfinbi/yellowfin-app-only
bashdocker run -d -p 80:8080 \ -e JDBC_CLASS_NAME=org.postgresql.Driver \ -e JDBC_CONN_URL=jdbc:postgresql://dbhost:5432/yellowfinDatabase \ -e JDBC_CONN_USER=dbuser \ -e JDBC_CONN_PASS=dbpassword \ yellowfinbi/yellowfin-app-only:latest
上述命令将以默认设置启动镜像,并在主机的80端口暴露Yellowfin服务。需向镜像传递外部Yellowfin仓库数据库的连接信息。启动应用程序专用容器前,需假设已通过标准Yellowfin安装程序安装了Yellowfin仓库。容器启动所需的JDBC连接设置可从用于安装数据库的实例的Yellowfin/appserver/webapps/ROOT/WEB-INF/web.xml文件中获取。
若Yellowfin仓库位于需要用户提供JDBC驱动的数据库(如Oracle或MySQL)中,可通过LIBRARY_ZIP环境变量将这些驱动添加到Docker容器。
由于应用程序专用镜像使用现有Yellowfin仓库数据库,许可证应已存在。若不存在,可在节点启动后通过Web界面加载,该许可证将应用于所有共享此仓库的Yellowfin节点。
可通过-e参数向容器传递配置选项。
| 配置项 | 描述 | 示例 |
|---|---|---|
| JDBC驱动名称, JDBC_CLASS_NAME | 配置连接Yellowfin仓库的JDBC驱动类(必填) | -e JDBC_CLASS_NAME=org.postgresql.Driver |
| 仓库URL, JDBC_CONN_URL | 指定仓库数据库的连接URL(必填) | -e JDBC_CONN_URL=jdbc:postgresql://host:5432/yf |
| 仓库用户名, JDBC_CONN_USER | 指定访问仓库数据库所需的数据库用户(必填) | -e JDBC_CONN_USER=dba |
| 仓库密码, JDBC_CONN_PASS | 指定访问仓库数据库所需的数据库密码(可加密)(必填) | -e JDBC_CONN_PASS=secret |
| 应用内存, APP_MEMORY | 指定分配给Yellowfin应用的内存(MB),未设置则使用Java默认值(通常为系统RAM的25%) | -e APP_MEMORY=4096 |
| 应用日志详细级别, LOG_LEVEL | 指定应用日志的详细级别(INFO/DEBUG/ERROR/WARN/TRACE)(默认:INFO) | -e LOG_LEVEL=DEBUG |
| 数据库密码加密, JDBC_CONN_ENCRYPTED | 指定数据库密码是否加密(true/false) | -e JDBC_CONN_ENCRYPTED=true |
| 连接池大小, JDBC_MAX_COUNT | 指定仓库数据库连接池的最大大小(默认:25) | -e JDBC_MAX_COUNT=25 |
| 默认欢迎页, WELCOME_PAGE | 指定默认索引页 | -e WELCOME_PAGE=custom_index.jsp |
| 内部应用HTTP端口, APP_SERVER_PORT | 指定内部HTTP端口(默认:8080) | -e APP_SERVER_PORT=9090 |
| 内部关闭端口, TCP_PORT | 指定内部关闭端口(默认:8083) | -e TCP_PORT=9093 |
| 代理端口, PROXY_PORT | 外部代理端口 | -e PROXY_PORT=443 |
| 代理协议, PROXY_SCHEME | 外部代理协议(http/https) | -e PROXY_SCHEME=https |
| 代理主机, PROXY_HOST | 外部代理主机或IP地址 | -e PROXY_HOST=reporting.company.com |
| 安全标志, SECURE_ENABLED | 启用安全Connector标志(true/false)(默认:false) | -e SECURE_ENABLED=true |
| Same-Site Cookie模式, SAMESITE_COOKIE_MODE | 配置Same-Site Cookie行为(unset/none/lax/strict)(默认:unset) | -e SAMESITE_COOKIE_MODE=none |
| 外部集群地址, CLUSTER_ADDRESS | 集群通信的外部集群地址,通常为Docker主机的主机名或IP地址 | -e CLUSTER_ADDRESS=10.10.10.23 |
| 外部集群端口, CLUSTER_PORT | 容器接收其他节点集群消息的唯一TCP端口 | -e CLUSTER_PORT=7801 |
| 内部集群网络适配器, CLUSTER_INTERFACE | 指定绑定集群消息的Docker接口,默认eth0,Kubernetes和Docker Swarm可能需修改 | -e CLUSTER_INTERFACE=match-interface:eth1 |
| 后台处理任务类型, NODE_BACKGROUND_TASKS | 逗号分隔的此节点可运行的后台任务类型列表,指定时需同时更新NODE_PARALLEL_TASKS,未指定则启用所有任务类型 | -e NODE_BACKGROUND_TASKS=FILTER_CACHE,ETL_PROCESS_TASK |
| 后台任务处理作业数, NODE_PARALLEL_TASKS | 逗号分隔的每个任务类型的并发任务数列表,数量需与NODE_BACKGROUND_TASKS的任务类型数量匹配 | -e NODE_PARALLEL_TASKS=5,4 |
| 附加库URL, LIBRARY_ZIP | 包含附加库的ZIP文件URL,将解压到Yellowfin的lib文件夹,用于添加JDBC驱动或自定义插件(ZIP条目不应包含路径) | -e LIBRARY_ZIP=http://lib-host/libraries.zip |
| 附加内容URL, CONTENT_ZIP | 包含附加内容的ZIP文件URL,将解压到Yellowfin的ROOT文件夹,用于添加样式、图片、JSP文件和库(ZIP可包含子目录) | -e CONTENT_ZIP=http://lib-host/contents.zip |
| 跳过OS包更新, SKIP_OS_PACKAGE_UPGRADE | 设置为TRUE可阻止容器启动时更新操作系统包 | -e SKIP_OS_PACKAGE_UPGRADE=TRUE |
| 全局会话超时, SESSION_TIMEOUT | 指定会话过期时间(分钟)(默认:30) | -e SESSION_TIMEOUT=60 |
Yellowfin数据/内容存储在关联的仓库数据库中。终止容器不会导致数据丢失。
启动容器后,通过浏览器连接到映射到容器应用端口的Docker主机TCP端口。
示例:
bashdocker run -d -p 9090:8080 \ -e JDBC_CLASS_NAME=org.postgresql.Driver \ -e JDBC_CONN_URL=jdbc:postgresql://dbhost:5432/yellowfinDatabase \ -e JDBC_CONN_USER=dbuser \ -e JDBC_CONN_PASS=dbpassword \ yellowfinbi/yellowfin-app-only:latest
访问地址:
[***]
Docker容器启动后,浏览器可能需要短暂延迟才会响应。
Yellowfin仓库数据库需手动升级,然后针对升级后的数据库启动新版本的Yellowfin应用程序专用容器。对于集群环境的零停机升级,可将现有应用节点置于只读模式,升级数据库,然后启动新版本应用节点。
若Docker容器托管在Web服务器、负载均衡器或代理之后,可能需要使用代理主机、代理协议和代理端口参数帮助Yellowfin生成URL。这些参数配置Yellowfin应用的外部地址和协议,仅适用于Yellowfin应用程序专用Docker镜像。
通常是用户访问Yellowfin时通过的代理主机名。
用户通过代理访问Yellowfin时连接的TCP端口,通常为80;若外部代理启用SSL,则通常为443。
可为HTTP或HTTPS,若代理为非SSL启用的Yellowfin节点提供SSL安全,则设为HTTPS,用于生成环境的正确协议重定向。
根据代理性质,可能需要启用安全标志,使应用能够将请求视为来自安全端点。
若Yellowfin环境的内容需嵌入不同域的外部网站,可能需要修改Same-Site Cookie配置。
SAMESITE_COOKIE_MODE选项定义如下:
(来源:Apache Tomcat Same-Site Cookie配置)
Yellowfin应用程序专用Docker镜像启用了仓库集群功能,允许多个共享同一仓库数据库的应用节点注册为集群成员。每个集群成员需要唯一的TCP端点用于节点间通信,启动容器时需设置,可通过CLUSTER_ADDRESS和CLUSTER_PORT配置参数进行配置。
所有Docker节点(可能运行在不同Docker主机)可解析的地址,通常设为Docker主机的主机名或IP地址。同一主机上运行的多个Yellowfin Docker容器可共享相同的集群地址,但需使用唯一的TCP端口进行通信。
暴露到外部网络用于节点间通信的TCP端口,需通过-p参数转发到外部网络。
在单主机上运行三个节点需确保外部暴露端口不冲突,为所有容器的Web访问和节点间通信分配唯一端口。Web访问和节点间通信的内部端口分别为8080和7800,通过-p参数映射到Docker主机的非冲突端口。
节点1:
bashdocker run -d -p 81:8080 -p 7801:7800 \ -e JDBC_CLASS_NAME=org.postgresql.Driver \ -e JDBC_CONN_URL=jdbc:postgresql://dbhost:5432/yellowfinDatabase \ -e JDBC_CONN_USER=dbuser \ -e JDBC_CONN_PASS=dbpassword \ -e CLUSTER_ADDRESS=dockerhost1 \ -e CLUSTER_PORT=7801 \ --name yellowfin_node1 \ yellowfinbi/yellowfin-app-only:latest
配置:81端口为暴露的Web UI端口,7801端口用于集群消息传递。
节点2:
bashdocker run -d -p 82:8080 -p 7802:7800 \ -e JDBC_CLASS_NAME=org.postgresql.Driver \ -e JDBC_CONN_URL=jdbc:postgresql://dbhost:5432/yellowfinDatabase \ -e JDBC_CONN_USER=dbuser \ -e JDBC_CONN_PASS=dbpassword \ -e CLUSTER_ADDRESS=dockerhost1 \ -e CLUSTER_PORT=7802 \ --name yellowfin_node2 \ yellowfinbi/yellowfin-app-only:latest
配置:82端口为暴露的Web UI端口,7802端口用于集群消息传递。
节点3:
bashdocker run -d -p 83:8080 -p 7803:7800 \ -e JDBC_CLASS_NAME=org.postgresql.Driver \ -e JDBC_CONN_URL=jdbc:postgresql://dbhost:5432/yellowfinDatabase \ -e JDBC_CONN_USER=dbuser \ -e JDBC_CONN_PASS=dbpassword \ -e CLUSTER_ADDRESS=dockerhost1 \ -e CLUSTER_PORT=7803 \ --name yellowfin_node3 \ yellowfinbi/yellowfin-app-only:latest
配置:83端口为暴露的Web UI端口,7803端口用于集群消息传递。
暴露的Web UI(HTTP)端口(上述示例中的81、82、83)应映射到负载均衡器,以在集群中分发Web流量。客户端通过浏览器连接到单个端点访问Yellowfin实例。测试时,连接任何单个端口将加载对应Yellowfin节点的Web UI。
节点间集群通信通过其他暴露端口(7801、7802、7803)进行。集群地址和端口的组合将注册到Yellowfin仓库,作为每个发现节点的唯一地址。
所有3个节点启动后,访问info_cluster.jsp应显示3个节点已加入集群。
!集群信息
可通过exec命令连接到运行中的Yellowfin实例,访问日志文件和系统设置。
bashdocker exec -it <docker容器ID> /bin/sh
通过以下命令获取Docker容器ID:
bashdocker container list
若在运行中的Docker容器中修改了设置,Yellowfin可能需要重启,可通过以下命令重启:
bashdocker restart <docker容器ID>
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

来自真实用户的反馈,见证轩辕镜像的优质服务