mirror of
https://github.com/vorachet/fuseki2-docker-installation.git
synced 2025-01-18 00:48:53 +00:00
122 lines
3.4 KiB
Docker
122 lines
3.4 KiB
Docker
|
## 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.
|
||
|
|
||
|
## Apache Jena Fuseki server Dockerfile.
|
||
|
|
||
|
## This Dockefile builds a reduced footprint container.
|
||
|
|
||
|
ARG OPENJDK_VERSION=15
|
||
|
ARG ALPINE_VERSION=3.12
|
||
|
ARG JENA_VERSION=4.2.0
|
||
|
|
||
|
# Internal, passed between stages.
|
||
|
ARG FUSEKI_DIR=/fuseki
|
||
|
ARG FUSEKI_JAR=jena-fuseki-server-${JENA_VERSION}.jar
|
||
|
ARG JAVA_MINIMAL=/opt/java-minimal
|
||
|
|
||
|
## ---- Stage: Download and build java.
|
||
|
FROM openjdk:${OPENJDK_VERSION}-alpine AS base
|
||
|
|
||
|
ARG JAVA_MINIMAL
|
||
|
ARG JENA_VERSION
|
||
|
ARG FUSEKI_DIR
|
||
|
ARG FUSEKI_JAR
|
||
|
ARG REPO=https://repo1.maven.org/maven2
|
||
|
ARG JAR_URL=${REPO}/org/apache/jena/jena-fuseki-server/${JENA_VERSION}/${FUSEKI_JAR}
|
||
|
|
||
|
RUN [ "${JENA_VERSION}" != "" ] || { echo -e '\n**** Set JENA_VERSION ****\n' ; exit 1 ; }
|
||
|
RUN echo && echo "==== Docker build for Apache Jena Fuseki ${JENA_VERSION} ====" && echo
|
||
|
|
||
|
# Alpine: For objcopy used in jlink
|
||
|
RUN rm -rf /var/cache/apk/* && \
|
||
|
rm -rf /tmp/*
|
||
|
|
||
|
RUN echo -e "http://nl.alpinelinux.org/alpine/v3.5/main\nhttp://nl.alpinelinux.org/alpine/v3.5/community" > /etc/apk/repositories
|
||
|
RUN apk add --no-cache curl binutils
|
||
|
|
||
|
## -- Fuseki installed and runs in /fuseki.
|
||
|
WORKDIR $FUSEKI_DIR
|
||
|
|
||
|
## -- Download the jar file.
|
||
|
COPY download.sh .
|
||
|
RUN chmod a+x download.sh
|
||
|
|
||
|
# Download, with check of the SHA1 checksum.
|
||
|
RUN ./download.sh --chksum sha1 "$JAR_URL"
|
||
|
|
||
|
## -- Alternatives to download : copy already downloaded.
|
||
|
## COPY ${FUSEKI_JAR} .
|
||
|
|
||
|
## Use Docker ADD - does not retry, does not check checksum, and may run every build.
|
||
|
## ADD "$JAR_URL"
|
||
|
|
||
|
## -- Make reduced Java JDK
|
||
|
|
||
|
ARG JDEPS_EXTRA="jdk.crypto.cryptoki,jdk.crypto.ec"
|
||
|
RUN \
|
||
|
JDEPS="$(jdeps --multi-release base --print-module-deps --ignore-missing-deps ${FUSEKI_JAR})" && \
|
||
|
jlink \
|
||
|
--compress 2 --strip-debug --no-header-files --no-man-pages \
|
||
|
--output "${JAVA_MINIMAL}" \
|
||
|
--add-modules "${JDEPS},${JDEPS_EXTRA}"
|
||
|
|
||
|
ADD entrypoint.sh .
|
||
|
ADD log4j2.properties .
|
||
|
|
||
|
# Run as this user
|
||
|
# -H : no home directorry
|
||
|
# -D : no password
|
||
|
|
||
|
RUN adduser -H -D fuseki fuseki
|
||
|
|
||
|
## ---- Stage: Build runtime
|
||
|
FROM alpine:${ALPINE_VERSION}
|
||
|
|
||
|
## Import ARGs
|
||
|
ARG JENA_VERSION
|
||
|
ARG JAVA_MINIMAL
|
||
|
ARG FUSEKI_DIR
|
||
|
ARG FUSEKI_JAR
|
||
|
|
||
|
COPY --from=base /opt/java-minimal /opt/java-minimal
|
||
|
COPY --from=base /fuseki /fuseki
|
||
|
COPY --from=base /etc/passwd /etc/passwd
|
||
|
|
||
|
WORKDIR $FUSEKI_DIR
|
||
|
|
||
|
ARG LOGS=${FUSEKI_DIR}/logs
|
||
|
ARG DATA=${FUSEKI_DIR}/databases
|
||
|
|
||
|
RUN \
|
||
|
mkdir -p $LOGS && \
|
||
|
mkdir -p $DATA && \
|
||
|
chown -R fuseki ${FUSEKI_DIR} && \
|
||
|
chmod a+x entrypoint.sh
|
||
|
|
||
|
## Default environment variables.
|
||
|
ENV \
|
||
|
JAVA_HOME=${JAVA_MINIMAL} \
|
||
|
JAVA_OPTIONS="-Xmx2048m -Xms2048m" \
|
||
|
JENA_VERSION=${JENA_VERSION} \
|
||
|
FUSEKI_JAR="${FUSEKI_JAR}" \
|
||
|
FUSEKI_DIR="${FUSEKI_DIR}"
|
||
|
|
||
|
USER fuseki
|
||
|
|
||
|
EXPOSE 3030
|
||
|
|
||
|
ENTRYPOINT ["./entrypoint.sh" ]
|
||
|
CMD []
|