我正在準備一個Docker鏡像來教我的學生關聯數據的基礎知識。我希望他們能夠真正準備適當的RDF和模擬發佈在網路爲關聯數據上的過程,所以我準備了一個碼頭工人的圖像,包括:Docker容器與Blazegraph三聯商店不工作可能是由於聯網
- 三店:Blazegraph,監聽端口9999
- GRefine。我已經複製了包含RDF擴展的Open Refine實例。聆聽端口3333.
- 關聯數據服務器:我已經複製了一個Jetty實例,其中包含Pubby。聆聽端口8080.
我測試了三個在我的本地主機(運行Ubuntu 14.04),他們工作得很好。這是Dockerfile我使用來構建圖像:
FROM ubuntu:14.04
MAINTAINER Mikel Egaña Aranguren <[email protected]>
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:碼頭也以同樣的方式失敗,並且GRefine甚至沒有工作。
更新:即使我可以通過網絡訪問blazegraph,但執行查詢失敗(通過對等方重置連接):wget http://127.0.0.1:9999/bigdata/sparql?query=select%20*%20where% 20 {%20?的%20 2 p%20?0%20}%20limit%201。 –
但是,當我「輸入」(-i -t)容器並手動運行blazegraph時,我可以對localhost和容器的IP執行上面的wget。 –