Use from Docker

Docker prerequisites

  1. Docker

  2. Docker Compose

Building the Docker images locally

To build the Docker images after first checking out the repository, run:

cd docker
script/bootstrap

Or after updating the repository:

cd docker
script/update

Pulling stable Docker images from Dockerhub

Alternatively, you can pull stable images from Dockerhub by running:

cd docker
script/pull

Running the TWKS server in Docker

After building or pulling the Docker images,

cd docker
script/server

The Docker container exposes the server’s REST and SPARQL APIs via HTTP on port 8080, which is bound to localhost.

The server Dockerfile has several declared VOLUMEs:

  • /data: where the server stores its data

  • /extcp: where the server loads Service Provider Interface (SPI) .jars

  • /extfs: where the server loads extension scripts

The volumes can be accessed by running any other container with --volumes-from. After starting up the server:

docker run -it --volumes-from=twks-server ubuntu:bionic bash

which mounts the volumes at the paths listed above. You can add an additional bind mount of a host directory:

docker run -it -v $PWD:/host --volumes-from=twks-server ubuntu:bionic bash

and then copy files from the host to the appropriate twks-server volume e.g., cp /host/my-spi.jar /extcp.

Running the TWKS command line interface with Docker

Run the server as above, then:

cd docker
cat nanopublication.trig | script/cli put-nanopublications --lang trig -

Explanation:

  • script/cli runs the TWKS command line interface container and connects it to the server.

  • put-nanopublication is the CLI sub-command

  • --lang trig specifies that the input will be in Trig format

  • put-nanopublications reads from stdin since - was specified (a -f file would be expected to be in the container; it is easier to use stdin)

  • cat nanopublication.trig writes the contents of that file to the container’s stdin