【发布时间】:2015-10-27 13:03:12
【问题描述】:
我正在准备一个 Docker 映像来教我的学生关联数据的基础知识。我希望他们实际准备适当的 RDF 并模拟将其作为关联数据发布到网络上的过程,因此我准备了一个 Docker 映像,其中包括:
- Triple Store:Blazegraph,监听9999端口。
- GRefine。我复制了一个 Open Refine 实例,其中包含 RDF 扩展。监听 3333 端口。
- 链接数据服务器:我复制了一个 Jetty 实例,其中包含 Pubby。监听 8080 端口。
我已经在我的本地主机(运行 Ubuntu 14.04)中测试了这三个,它们工作正常。这是我用来构建映像的 Dockerfile:
FROM ubuntu:14.04
MAINTAINER Mikel Egaña Aranguren <my.email@x.com>
RUN apt-get update && apt-get install -y openjdk-7-jre wget curl
RUN mkdir /LinkedDataServer
COPY google-refine-2.5 /LinkedDataServer/google-refine-2.5
COPY blazegraph /LinkedDataServer/blazegraph
COPY jetty /LinkedDataServer/jetty
EXPOSE 9999
EXPOSE 3333
EXPOSE 8080
WORKDIR /LinkedDataServer
CMD java -server -jar blazegraph/bigdata-bundled.jar
CMD google-refine-2.5/refine -i 0.0.0.0
WORKDIR /LinkedDataServer/jetty
CMD java -jar start.jar jetty.port=8080
我运行容器,它确实映射了适当的端口:
docker run -d -p 9999:9999 -p 3333:3333 -p 8080:8080 mikeleganaaranguren/linked-data-server:0.0.1
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a08709d23acb mikeleganaaranguren/linked-data-server:0.0.1 /bin/sh -c 'java -ja 5 seconds ago Up 4 seconds 0.0.0.0:3333->3333/tcp, 0.0.0.0:8080->8080/tcp, 0.0.0.0:9999->9999/tcp dreamy_engelbart
例如,三重商店似乎正在运作。如果我去127.0.0.1:9999,我可以访问三合一商店:
但是,如果尝试做任何事情(查询、上传数据……),三重存储就会失败,并显示“错误:无法联系服务器”。由于相同的设置适用于主机,我假设我在 Docker 上做错了。我尝试使用-P 而不是映射端口,使用--net=host,但我得到了同样的错误。
PS:Jetty 也以同样的方式失败,GRefine 甚至无法正常工作。
【问题讨论】:
-
更新:尽管我可以通过网络访问 blazegraph,但执行查询失败(对等方重置连接):wget 127.0.0.1:9999/bigdata/sparql?query=select%20*%20where%20{%20?s%20?p% 20?o%20}%20limit%201.
-
当我“进入”(-i -t) 容器并手动运行 blazegraph 时,我可以针对 localhost 和容器的 IP 执行上面的 wget。
标签: docker sparql rdf triplestore blazegraph