[ 
https://issues.apache.org/jira/browse/JENA-909?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16995914#comment-16995914
 ] 

Martynas Jusevičius edited comment on JENA-909 at 12/13/19 9:10 PM:
--------------------------------------------------------------------

What do you mean with "container namespace"? The container filesystem?

This is currently my setup (of one of the services) in {{docker-compose.yml}}:

{{ fuseki-admin:}}
{{  image: atomgraph/fuseki}}
{{  ports:}}
{{    - 3030:3030}}
{{  environment:}}
{{    - BASE_URI=https://localhost:4443/admin/}}
{{  volumes:}}
{{    - 
./config/fuseki/admin.ttl:/mnt/apache-fuseki/configuration/admin.ttl:ro}}
{{    - ./datasets/admin.trig:/mnt/apache-fuseki/admin.trig:ro}}
{{  entrypoint: [ sh, -c, "\{ echo \"@base <$${BASE_URI}> .\"; cat 
/mnt/apache-fuseki/admin.trig; } > /mnt/apache-fuseki/based.admin.trig && 
/usr/bin/java -jar fuseki-server.jar --config 
/mnt/apache-fuseki/configuration/admin.ttl" ]}}

And this the {{admin.ttl}} config:

{{PREFIX : <#>}}
 {{PREFIX fuseki: <[http://jena.apache.org/fuseki#]>}}
 {{PREFIX rdf: <[http://www.w3.org/1999/02/22-rdf-syntax-ns#]>}}
 {{PREFIX ja: <[http://jena.hpl.hp.com/2005/11/Assembler#]>}}
 {{PREFIX tdb2: <[http://jena.apache.org/2016/tdb#]>}}

{{[] a fuseki:Server .}}

{{<#service> a fuseki:Service ;}}
 {{  fuseki:name "ds" ;}}
 {{  fuseki:endpoint [ fuseki:operation fuseki:query; ] ;}}
 {{  fuseki:endpoint [ fuseki:operation fuseki:update;] ;}}
 {{  fuseki:endpoint [ fuseki:operation fuseki:gsp-rw; ] ;}}
 {{  fuseki:dataset <#dataset> .}}

{{<#dataset> a ja:MemoryDataset;}}
 {{  ja:data "/mnt/apache-fuseki/based.admin.trig" .}}

It works fine with the in-memory dataset. But for real use I need persistence 
and thus a {{tdb2:DatasetTDB2}}.

The part that looks wobbly to me is that there is no guarantee {{VOLUME $DATA}} 
will match {{-loc}}. Why not pass {{-loc $DATA}} to the entrypoint by default? 
That still leaves the problem with {{tdb2:location}} in the RDF config, which 
if mounted could be anything. Unless the entrypoint substitutes {{tdb2:location 
"$DATA"}} or something like that?

I also haven't figured out yet how to import a {{DatasetTDB2}} into it before 
the service starts - or before it becomes available externally. That is why I 
was looking at the init scripts in the {{mysql}} image (as I wrote above).


was (Author: graphity):
What do you mean with "container namespace"? The container filesystem?

This is currently my setup (of one of the services) in {{docker-compose.yml}}:

{{{{fuseki-admin:}}}}
{{{{  image: atomgraph/fuseki}}}}
{{{{  ports:}}}}
{{{{    - 3030:3030}}}}
{{{{  environment:}}}}
{{{{    - BASE_URI=[https://localhost:4443/admin/]}}}}
{{{{  volumes:}}}}
{{{{    - 
./config/fuseki/admin.ttl:/mnt/apache-fuseki/configuration/admin.ttl:ro}}}}
{{{{    - ./datasets/admin.trig:/mnt/apache-fuseki/admin.trig:ro}}}}
{{{{entrypoint: [ sh, -c, "\{ echo \"@base <$${BASE_URI}> .\"; cat 
/mnt/apache-fuseki/admin.trig; } > /mnt/apache-fuseki/based.admin.trig && 
/usr/bin/java -jar fuseki-server.jar --config 
/mnt/apache-fuseki/configuration/admin.ttl" ]}}}}

And this the {{admin.ttl}} config:

{{PREFIX : <#>}}
 {{PREFIX fuseki: <[http://jena.apache.org/fuseki#]>}}
 {{PREFIX rdf: <[http://www.w3.org/1999/02/22-rdf-syntax-ns#]>}}
 {{PREFIX ja: <[http://jena.hpl.hp.com/2005/11/Assembler#]>}}
 {{PREFIX tdb2: <[http://jena.apache.org/2016/tdb#]>}}

{{[] a fuseki:Server .}}

{{<#service> a fuseki:Service ;}}
 {{  fuseki:name "ds" ;}}
 {{  fuseki:endpoint [ fuseki:operation fuseki:query; ] ;}}
 {{  fuseki:endpoint [ fuseki:operation fuseki:update;] ;}}
 {{  fuseki:endpoint [ fuseki:operation fuseki:gsp-rw; ] ;}}
 {{  fuseki:dataset <#dataset> .}}

{{<#dataset> a ja:MemoryDataset;}}
 {{  ja:data "/mnt/apache-fuseki/based.admin.trig" .}}

It works fine with the in-memory dataset. But for real use I need persistence 
and thus a {{tdb2:DatasetTDB2}}.

The part that looks wobbly to me is that there is no guarantee {{VOLUME $DATA}} 
will match {{-loc}}. Why not pass {{-loc $DATA}} to the entrypoint by default? 
That still leaves the problem with {{tdb2:location}} in the RDF config, which 
if mounted could be anything. Unless the entrypoint substitutes {{tdb2:location 
"$DATA"}} or something like that?

I also haven't figured out yet how to import a {{DatasetTDB2}} into it before 
the service starts - or before it becomes available externally. That is why I 
was looking at the init scripts in the {{mysql}} image (as I wrote above).

> Create Docker launcher for Fuseki
> ---------------------------------
>
>                 Key: JENA-909
>                 URL: https://issues.apache.org/jira/browse/JENA-909
>             Project: Apache Jena
>          Issue Type: Improvement
>          Components: Fuseki
>            Reporter: Andy Seaborne
>            Priority: Major
>         Attachments: Dockerfile.0, image-2019-10-02-22-24-12-723.png, 
> log4j.properties
>
>
> Provide a Docker launcher and setup documentation for  Fuseki2.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to