diff --git a/fuseki/Dockerfile b/fuseki/Dockerfile index c61a9af..22c1ee9 100644 --- a/fuseki/Dockerfile +++ b/fuseki/Dockerfile @@ -1,25 +1,97 @@ -# fuseki with openjdk 11 docker image -# @created 2021-11 -# author="Andy Bunce" -ARG JDK_IMAGE=adoptopenjdk:11-jre-hotspot -ARG VERSION=4.2.0 +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. -FROM $JDK_IMAGE -ENV URL=https://dlcdn.apache.org/jena/binaries/apache-jena-fuseki-${VERSION}.tar.gz -ENV BASE=/mnt/apache-jena-fuseki-${VERSION} +FROM adoptopenjdk:11-jre-hotspot +MAINTAINER Stian Soiland-Reyes -WORKDIR /mnt -RUN mkdir -p ${BASE} && curl -L ${URL} | tar zxv -C ${BASE} --strip-components 1 +ENV LANG C.UTF-8 +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + bash curl ca-certificates findutils coreutils gettext pwgen procps tini \ + ; \ + rm -rf /var/lib/apt/lists/* -WORKDIR $BASE + +# Update below according to https://jena.apache.org/download/ +# and checksum for apache-jena-fuseki-4.x.x.tar.gz.sha512 +ENV FUSEKI_SHA512 359f8f99c8fa5968c1bdddcc39214db86da822804e3dd5fa182b86daff2d121a85b2102cffec853d9a80ceca7dea8ef65ef875919d653984af9bd297bc740167 +ENV FUSEKI_VERSION 4.2.0 +# No need for https due to sha512 checksums below +ENV ASF_MIRROR http://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename= +ENV ASF_ARCHIVE http://archive.apache.org/dist/ + +LABEL org.opencontainers.image.url https://github.com/stain/jena-docker/tree/master/jena-fuseki +LABEL org.opencontainers.image.source https://github.com/stain/jena-docker/ +LABEL org.opencontainers.image.documentation https://jena.apache.org/documentation/fuseki2/ +LABEL org.opencontainers.image.title "Apache Jena Fuseki" +LABEL org.opencontainers.image.description "Fuseki is a SPARQL 1.1 server with a web interface, backed by the Apache Jena TDB RDF triple store." +LABEL org.opencontainers.image.version ${FUSEKI_VERSION} +LABEL org.opencontainers.image.licenses "(Apache-2.0 AND (GPL-2.0 WITH Classpath-exception-2.0) AND GPL-3.0)" +LABEL org.opencontainers.image.authors "Apache Jena Fuseki by https://jena.apache.org/; this image by https://orcid.org/0000-0001-9842-9718" + +# Config and data +ENV FUSEKI_BASE /fuseki + + +# Installation folder +ENV FUSEKI_HOME /jena-fuseki + +WORKDIR /tmp +# published sha512 checksum +RUN echo "$FUSEKI_SHA512 fuseki.tar.gz" > fuseki.tar.gz.sha512 +# Download/check/unpack/move in one go (to reduce image size) +RUN (curl --location --silent --show-error --fail --retry-connrefused --retry 3 --output fuseki.tar.gz ${ASF_MIRROR}jena/binaries/apache-jena-fuseki-$FUSEKI_VERSION.tar.gz || \ + curl --fail --silent --show-error --retry-connrefused --retry 3 --output fuseki.tar.gz $ASF_ARCHIVE/jena/binaries/apache-jena-fuseki-$FUSEKI_VERSION.tar.gz) && \ + sha512sum -c fuseki.tar.gz.sha512 && \ + tar zxf fuseki.tar.gz && \ + mv apache-jena-fuseki* $FUSEKI_HOME && \ + rm fuseki.tar.gz* && \ + cd $FUSEKI_HOME && rm -rf fuseki.war && chmod 755 fuseki-server + +# Test the install by testing it's ping resource. 20s sleep because Docker Hub. +RUN $FUSEKI_HOME/fuseki-server & \ + sleep 20 && \ + curl -sS --fail 'http://localhost:3030/$/ping' + +# No need to kill Fuseki as our shell will exit after curl + +# As "localhost" is often inaccessible within Docker container, +# we'll enable basic-auth with a random admin password +# (which we'll generate on start-up) +COPY shiro.ini $FUSEKI_HOME/shiro.ini +COPY docker-entrypoint.sh / +RUN chmod 755 /docker-entrypoint.sh + + +COPY load.sh $FUSEKI_HOME/ +COPY tdbloader $FUSEKI_HOME/ +COPY tdbloader2 $FUSEKI_HOME/ +RUN chmod 755 $FUSEKI_HOME/load.sh $FUSEKI_HOME/tdbloader $FUSEKI_HOME/tdbloader2 +#VOLUME /staging + + +# Where we start our server from +WORKDIR $FUSEKI_HOME + +# Make sure we start with empty /fuseki +RUN rm -rf $FUSEKI_BASE +VOLUME $FUSEKI_BASE EXPOSE 3030 +ENTRYPOINT ["/usr/bin/tini", "--", "/docker-entrypoint.sh"] +CMD ["/jena-fuseki/fuseki-server"] -ENTRYPOINT [ "bin/fuseki-server" ] - -LABEL org.opencontainers.image.source="https://repository.apache.org/content/repositories/releases/org/apache/jena/jena-fuseki-server/${VERSION}" -LABEL org.opencontainers.image.vendor="Quodatum Ltd" -LABEL org.opencontainers.image.licenses="Apache-2.0" -LABEL com.quodatum.basex-docker.basex="${VERSION}" -LABEL com.quodatum.basex-docker.jdk="${JDK_IMAGE}" \ No newline at end of file