
yellowfinbi/yellowfin-app-onlyYellowfin应用程序专用镜像仅包含Yellowfin应用程序,可连接到现有仓库数据库。该镜像可用作单实例部署或集群节点,适用于生产环境。由于数据持久化存储在外部仓库中,容器关闭时不会导致数据丢失。
通过修改DockerFile,可根据特定自定义部署需求调整镜像。构建Docker镜像所需的DockerFile及其他资源可在GitHub获取:[***]
构建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=[***] |
| 附加内容URL, CONTENT_ZIP | 包含附加内容的ZIP文件URL,将解压到Yellowfin的ROOT文件夹,用于添加样式、图片、JSP文件和库(ZIP可包含子目录) | -e CONTENT_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>



探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 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 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务