
secoresearch/fuseki本镜像为 Apache Jena Fuseki 的 Docker 封装,包含 SeCo 扩展,灵感源自 stain/jena-fuseki。
Docker Hub 地址:secoresearch/fuseki
主要用途:提供基于 TDB 的 RDF 数据存储与查询服务,支持 SPARQL 1.1 端点、文本索引、持久化存储及 SHACL 验证等功能,适用于构建语义数据服务或作为 RDF 数据集的分发载体。
ds 数据集,使用 TDB 存储引擎,集成 Lucene 文本索引tdb:unionDefaultGraph=true,支持默认图查询匹配所有命名图的并集(默认图本身除外)tdbloader、textindexer、tdbstats 等脚本,支持批量加载 RDF 数据http://localhost:3030,管理员密码通过 ADMIN_PASSWORD 环境变量设置tdb:unionDefaultGraph=true:默认图查询匹配所有命名图的并集(注意:存储的默认图不属于此并集,需通过 <urn:x-arq:DefaultGraph> 显式访问)QUERY_TIMEOUT 环境变量调整(单位:毫秒)http://localhost:3030/ds/sparql(支持 SELECT/ASK/CONSTRUCT/DESCRIBE)http://localhost:3030/ds/data(支持 RDF 数据读取)通过环境变量启用(详见「环境变量配置」):
http://localhost:3030/ds/update(支持 INSERT/DELETE 操作)http://localhost:3030/ds/data(支持 RDF 数据写入)http://localhost:3030/ds/shacl(支持 SHACL 约束验证)容器内置 tdbloader、textindexer、tdbstats 脚本,用于将 RDF 数据加载到 TDB 模型。示例可参考 congress-legislators 数据集的 Dockerfile。
默认情况下,容器删除后数据会丢失,可通过以下方式实现持久化:
挂载 /fuseki-base/databases 目录至宿主机,适用于需动态更新数据或保持镜像轻量化的场景:
bash# 示例:绑定宿主机 ./fuseki-data 目录到容器数据库目录 docker run ... --mount type=bind,source="$(pwd)"/fuseki-data,target=/fuseki-base/databases ...
基于本镜像构建新镜像,在构建阶段加载数据,适用于静态、只读数据集分发:
dockerfileFROM secoresearch/fuseki # 复制 RDF 数据到镜像 COPY data.rdf /data/ # 使用 tdbloader 加载数据到 TDB RUN tdbloader --loc /fuseki-base/databases/ds /data/data.rdf
| 环境变量 | 作用 | 取值范围 | 默认值 |
|---|---|---|---|
ADMIN_PASSWORD | 管理员密码(必填) | 字符串 | 无 |
ENABLE_DATA_WRITE | 启用图存储端点写权限 | true/false | false |
ENABLE_UPDATE | 启用 SPARQL 更新端点 | true/false | false |
ENABLE_SHACL | 启用 SHACL 验证端点 | true/false | false |
QUERY_TIMEOUT | 查询超时时间(毫秒) | 正整数 | 60000(60秒) |
USE_SYSTEM_CA_CERTS | 使用系统 CA 证书(用于 HTTPS 访问) | 空值/1(启用) | 空值(禁用) |
bashdocker build --squash -t secoresearch/fuseki .
bashdocker run --rm -it -p 3030:3030 --name fuseki \ -e ADMIN_PASSWORD=your_secure_password \ -e ENABLE_DATA_WRITE=true \ -e ENABLE_UPDATE=true \ -e QUERY_TIMEOUT=30000 \ --mount type=bind,source="$(pwd)"/fuseki-data,target=/fuseki-base/databases \ secoresearch/fuseki
bash# 创建本地目录 mkdir fuseki-data fuseki-configuration # 复制默认配置文件并修改(按需启用端点) cp -p assembler.ttl fuseki-configuration/ # 运行容器,挂载数据和配置目录 docker run --rm -it -p 3030:3030 --name fuseki \ -e ADMIN_PASSWORD=your_secure_password \ --mount type=bind,source="$(pwd)"/fuseki-data,target=/fuseki-base/databases \ --mount type=bind,source="$(pwd)"/fuseki-configuration,target=/fuseki-base/configuration \ secoresearch/fuseki
yamlversion: '3' services: fuseki: image: secoresearch/fuseki ports: - "3030:3030" environment: - ADMIN_PASSWORD=your_secure_password - ENABLE_UPDATE=true - QUERY_TIMEOUT=60000 volumes: - ./fuseki-data:/fuseki-base/databases - ./fuseki-configuration:/fuseki-base/configuration restart: unless-stopped
若在 OpenShift 中以非 root 用户运行,需确保数据目录权限:
dockerfile# 在自定义 Dockerfile 中添加(构建阶段) RUN chgrp -R 0 $FUSEKI_BASE \ && chmod -R g+rwX $FUSEKI_BASE
Note:若通过绑定挂载自定义 assembler.ttl,不建议使用环境变量(如 ENABLE_DATA_WRITE)修改端点权限,可能导致文件权限错误。此时应直接编辑 assembler.ttl 配置端点。






manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务