
khaller/graphdb-freeOntotext未提供GraphDB免费版的Docker镜像,但其GitHub上有免费版的Dockerfile。本仓库的Dockerfile在此基础上略有调整,包含两个小程序:启动前检查仓库是否需要初始化;扫描初始化目录中的SPARQL查询并在首次启动时发送到GraphDB实例(例如自动创建FTS索引)。
注意:如发布这些Docker镜像有任何问题,请联系***。
使用示例可参考Pokémon Playground的docker-compose.yml文件。
欢迎在GitHub提交bug和功能建议:khaller93/graphdb-free,或联系***。
镜像可通过以下命令启动:
bashdocker run -p 127.0.0.1:7200:7200 --name graphdb-instance-name -t khaller/graphdb-free:10.0.0
可向GraphDB服务器传递参数,如启用服务器模式(-s)或设置堆大小(--GDB_HEAP_SIZE):
bashdocker run -p 127.0.0.1:7200:7200 --name graphdb-instance-name -t khaller/graphdb-free:10.0.0 -s --GDB_HEAP_SIZE=12G
容器默认以root用户启动,可通过GDB_USER环境变量指定低权限用户(UID或用户名)运行。例如使用nobody用户:
bashdocker run -p 7200:7200 --name rootless-graphdb -e GDB_USER=nobody -t khaller/graphdb-free:10.2.1
Linux主机第一个普通用户的UID通常为1000(可通过id -u获取主机用户UID)。容器不识别主机用户名称,需指定UID:
bashdocker run -p 7200:7200 --name rootless-graphdb -e GDB_USER=1000 -t khaller/graphdb-free:10.2.1
版本>=1.3.0的镜像包含GO程序,会扫描/repository.init/目录中的仓库配置。如需首次启动时初始化仓库,需在/repository.init/下创建子文件夹(名称不限),并添加config.ttl配置文件。Ontotext的文档详细介绍了配置文件格式,以下是极简示例:
提示:GraphDB >=10中,仓库类型graphdb:FreeSailRepository已替换为graphdb:SailRepository,sail类型graphdb:FreeSail已替换为graphdb:Sail。
turtle@prefix rdfs: <[***]>. @prefix rep: <[***]>. @prefix sr: <[***]>. @prefix sail: <[***]>. @prefix owlim: <[***]>. [] a rep:Repository ; rep:repositoryID "dbpedia" ; rdfs:label "DBPedia" ; rep:repositoryImpl [ rep:repositoryType "graphdb:SailRepository"; sr:sailImpl [ sail:sailType "graphdb:Sail" ; owlim:entity-index-size "***" ; ] ].
可选:在仓库子文件夹中创建toLoad目录,放入支持格式的数据文件(支持GZip压缩),通过对应GraphDB版本的Importrdf/PreLoad工具自动加载。
/repository.init/目录结构示例(将初始化两个仓库并加载数据):
dbpedia/ ├── config.ttl └── toLoad wikidata/ ├── config.ttl └── toLoad
初始化成功后,仓库子文件夹会生成init.lock文件,删除该文件可重新初始化仓库。
版本>=1.3.3的镜像包含GO程序,会递归扫描/repository.init/目录下所有.sparql文件,首次启动时发送到GraphDB实例。对应仓库子文件夹会生成sparql.lock文件,记录已成功发送的查询。
需在仓库创建和数据加载后自动配置FTS索引,可将FTS配置更新查询(.sparql文件)放入对应仓库文件夹。Ontotext的文档详细介绍了配置选项。示例目录结构:
提示:GraphDB >=9.9后,FTS索引配置语法已变更。
dbpedia/ ├── config.ttl ├── fts-m2-index.sparql # FTS索引配置查询 └── toLoad
官方Ontotext DockerHub仓库重要说明: 应用数据存储有多种方式,建议熟悉以下选项:
Docker内部卷管理:默认方式,Docker将数据库文件写入主机磁盘,简单但文件位置不透明。
主机目录挂载:在主机创建数据目录并挂载到容器内,文件位置明确,需确保目录存在及权限正确。
/my/own/graphdb-home。bashdocker run -p 127.0.0.1:7200:7200 -v /my/own/graphdb-home:/opt/graphdb/data --name graphdb-instance-name -t khaller/graphdb-free:tag
-v /my/own/graphdb-home:/opt/graphdb/data将主机目录挂载为容器内/opt/graphdb/data(GraphDB默认数据、日志及工作文件存储路径)。
启用SELinux的主机需为数据目录分配SELinux策略类型:
bashchcon -Rt svirt_sandbox_file_t /my/own/graphdb-home

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