This a is Docker container for generating the indexes for a digital resource, according to an indexing ontology. In order to provide fast generation of the indexes out of a digital resource, the goals of this container are: small size
, and speed
.
To have a small size of this container, the base image was choosen to be busybox:latest, which is about 2MB in size. The scratch image, which is much smaller, was not used, due to the fact that the continuous integration in GitLab needs a container having a Bourne shell program.
Also, the Rust modules were compiled with special flags, so that the executable size to be small.
In order to achieve a high speed of procesing, all components are developed in Rust
language but one, which is developed in C
language.
??Also, all the components are united in a single Rust
executable.
The container provides the following modules:
-
xsltproc, needed for XSLT transformations.
-
rdf-data-aggregator based upon oxigraph that runs in memory, needed for SPARQL queries used to generate indexes out of RDF data;
-
ttl-merger needed for merging various RDF files in Tyrtle format;
-
xml-to-index-as-triples needed for extracting indexes out of XML data.
-
index-as-triples-to-compressed-index needed to compress the indexes.
-
index-as-triples-to-metadata needed for extracting metadata from indexes.
-
rdfa-template-engine needed to generate the static website for a digital edition.
-
Maybe this https://github.com/ballsteve/xrust is a replacement for
xsltproc
. -
Include all the processing steps in a single Rust executable, called
indexing-backend
.
https://github.com/phusion/baseimage-docker
http://zderadicka.eu/static-build-of-rust-executables/