bf2343b7e4
Integration Tests - MySQL + Elasticsearch / Detect Changes (push) Has been cancelled
Integration Tests - MySQL + Elasticsearch / integration-tests-mysql-elasticsearch (push) Has been cancelled
Integration Tests - PostgreSQL + Elasticsearch + Redis / Detect Changes (push) Has been cancelled
Integration Tests - PostgreSQL + Elasticsearch + Redis / integration-tests-postgres-elasticsearch-redis (push) Has been cancelled
Integration Tests - PostgreSQL + OpenSearch / Detect Changes (push) Has been cancelled
Integration Tests - PostgreSQL + OpenSearch / integration-tests-postgres-opensearch (push) Has been cancelled
Java Checkstyle / java-checkstyle (push) Has been cancelled
Maven Collate Tests / maven-collate-ci (push) Has been cancelled
OpenMetadata Service Unit Tests / openmetadata-service-unit-tests-status (push) Has been cancelled
Publish Package to Maven Central Repository / publish-maven-packages (push) Has been cancelled
OpenMetadata Service Unit Tests / Detect Changes (push) Has been cancelled
OpenMetadata Service Unit Tests / openmetadata-service-unit-tests (push) Has been cancelled
OpenMetadata Service Unit Tests / k8s_operator-unit-tests (push) Has been cancelled
59 lines
2.5 KiB
Docker
59 lines
2.5 KiB
Docker
# Apache Jena Fuseki Docker Image for OpenMetadata RDF Store
|
|
# eclipse-temurin replaces the deprecated `openjdk` Docker Hub images
|
|
# (`openjdk:17-jdk-slim` was removed from the registry — CI builds against it
|
|
# fail with "manifest unknown"). JRE is enough since this image only runs the
|
|
# Fuseki shell launcher; no compilation happens inside the container.
|
|
FROM eclipse-temurin:17-jre-jammy
|
|
|
|
ENV FUSEKI_VERSION=5.6.0
|
|
ENV FUSEKI_HOME=/fuseki
|
|
# FUSEKI_BASE must point at the directory containing shiro.ini so Fuseki picks
|
|
# up our auth config on boot. Without this, Fuseki falls back to its built-in
|
|
# default base (typically the working directory) and the bundled shiro.ini is
|
|
# never loaded — leaving the admin endpoints (incl. /$/compact and
|
|
# /$/datasets) reachable without authentication. The Dockerfile copies
|
|
# config.ttl + shiro.ini into /fuseki below, so we point FUSEKI_BASE there.
|
|
ENV FUSEKI_BASE=/fuseki
|
|
|
|
# gettext-base provides `envsubst`, used by the entrypoint to inject
|
|
# FUSEKI_ADMIN_PASSWORD / FUSEKI_OPENMETADATA_PASSWORD into shiro.ini at
|
|
# container start. Without this, operators could not override the default
|
|
# Fuseki credentials via environment variables.
|
|
RUN apt-get update && apt-get install -y \
|
|
wget \
|
|
gettext-base \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Download and install Fuseki
|
|
RUN wget -q https://archive.apache.org/dist/jena/binaries/apache-jena-fuseki-${FUSEKI_VERSION}.tar.gz \
|
|
&& tar -xzf apache-jena-fuseki-${FUSEKI_VERSION}.tar.gz \
|
|
&& mv apache-jena-fuseki-${FUSEKI_VERSION} ${FUSEKI_HOME} \
|
|
&& rm apache-jena-fuseki-${FUSEKI_VERSION}.tar.gz
|
|
|
|
WORKDIR ${FUSEKI_HOME}
|
|
|
|
# Create data directory
|
|
RUN mkdir -p /fuseki-data
|
|
|
|
# Custom configuration. shiro.ini ships as a TEMPLATE because Apache Shiro's
|
|
# INI realm does not interpolate ${VAR} placeholders natively — we have to
|
|
# render it at container start with the actual passwords. The entrypoint
|
|
# does that via envsubst.
|
|
COPY config.ttl /fuseki/config.ttl
|
|
COPY shiro.ini.template /fuseki/shiro.ini.template
|
|
COPY entrypoint.sh /entrypoint.sh
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
# Expose Fuseki port
|
|
EXPOSE 3030
|
|
|
|
# Volume for persistent data
|
|
VOLUME ["/fuseki-data"]
|
|
|
|
# Health check
|
|
HEALTHCHECK --interval=30s --timeout=3s --start-period=40s --retries=3 \
|
|
CMD wget -q --spider http://localhost:3030/$/ping || exit 1
|
|
|
|
# Run Fuseki via the entrypoint (which renders shiro.ini then execs fuseki-server)
|
|
ENTRYPOINT ["/entrypoint.sh"]
|
|
CMD ["./fuseki-server", "--loc=/fuseki-data", "--update", "/openmetadata"] |