1- # syntax=docker/dockerfile:1.10.0@sha256:865e5dd094beca432e8c0a1d5e1c465db5f998dca4e439981029b3b81fb39ed5
2- # check=error=true
1+ # syntax=docker/dockerfile:1.8.1@sha256:e87caa74dcb7d46cd820352bfea12591f3dba3ddc4285e19c7dcd13359f7cefd
32
43FROM stackable/image/kcat AS kcat
54
6- FROM stackable/image/java-devel AS kafka-builder
5+ FROM stackable/image/java-devel as kafka-builder
76
87ARG PRODUCT
98ARG SCALA
109ARG OPA_AUTHORIZER
1110ARG JMX_EXPORTER
1211
12+ RUN <<EOF
13+ microdnf update
14+
15+ # patch: Required for the apply-patches.sh script
16+ microdnf install \
17+ patch
18+
19+ microdnf clean all
20+ rm -rf /var/cache/yum
21+ EOF
22+
1323USER stackable
1424WORKDIR /stackable
1525
16- RUN curl "https://repo.stackable.tech/repository/packages/kafka/kafka-${PRODUCT}-src.tgz" | tar -xzC . && \
17- cd kafka-${PRODUCT}-src && \
26+ COPY --chown=stackable:stackable kafka/stackable/patches/apply_patches.sh /stackable/kafka-${PRODUCT}-src/patches/apply_patches.sh
27+ COPY --chown=stackable:stackable kafka/stackable/patches/${PRODUCT} /stackable/kafka-${PRODUCT}-src/patches/${PRODUCT}
28+
29+ RUN curl --fail -L "https://repo.stackable.tech/repository/packages/kafka/kafka-${PRODUCT}-src.tgz" | tar -xzC .
30+ RUN cd kafka-${PRODUCT}-src && \
31+ ./patches/apply_patches.sh ${PRODUCT} && \
1832 # TODO: Try to install gradle via package manager (if possible) instead of fetching it from the internet
1933 # We don't specify "-x test" to skip the tests, as we might bump some Kafka internal dependencies in the future and
2034 # it's a good idea to run the tests in this case.
2135 ./gradlew clean releaseTarGz && \
36+ ./gradlew cyclonedxBom && \
2237 tar -xf core/build/distributions/kafka_${SCALA}-${PRODUCT}.tgz -C /stackable && \
38+ cp build/reports/bom.json /stackable/kafka_${SCALA}-${PRODUCT}.cdx.json && \
2339 rm -rf /stackable/kafka_${SCALA}-${PRODUCT}/site-docs/ && \
2440 rm -rf /stackable/kafka-${PRODUCT}-src
2541
26- # TODO (@NickLarsenNZ): Compile from source: https://github.com/StyraInc/opa-kafka-plugin
27- RUN curl https://repo.stackable.tech/repository/packages/kafka-opa-authorizer/opa-authorizer-${OPA_AUTHORIZER}-all.jar \
42+ RUN curl --fail -L https://repo.stackable.tech/repository/packages/kafka-opa-authorizer/opa-authorizer-${OPA_AUTHORIZER}-all.jar \
2843 -o /stackable/kafka_${SCALA}-${PRODUCT}/libs/opa-authorizer-${OPA_AUTHORIZER}-all.jar
2944
3045COPY --chown=stackable:stackable kafka/stackable/jmx/ /stackable/jmx/
31- RUN curl https://repo.stackable.tech/repository/packages/jmx-exporter/jmx_prometheus_javaagent-${JMX_EXPORTER}.jar \
46+ RUN curl --fail -L https://repo.stackable.tech/repository/packages/jmx-exporter/jmx_prometheus_javaagent-${JMX_EXPORTER}.jar \
3247 -o /stackable/jmx/jmx_prometheus_javaagent-${JMX_EXPORTER}.jar && \
3348 chmod +x /stackable/jmx/jmx_prometheus_javaagent-${JMX_EXPORTER}.jar && \
3449 ln -s /stackable/jmx/jmx_prometheus_javaagent-${JMX_EXPORTER}.jar /stackable/jmx/jmx_prometheus_javaagent.jar
@@ -69,8 +84,6 @@ LABEL name="Apache Kafka" \
6984COPY kafka/kubernetes.repo /etc/yum.repos.d/kubernetes.repo
7085RUN microdnf update && \
7186 microdnf install \
72- # needed by kcat for kerberos
73- cyrus-sasl-gssapi \
7487 # Can be removed once listener-operator integration is used
7588 kubectl && \
7689 microdnf clean all && \
@@ -85,6 +98,7 @@ COPY --chown=stackable:stackable kafka/licenses /licenses
8598# We copy opa-authorizer.jar and jmx-exporter through the builder image to have an absolutely minimal final image
8699# (e.g. we don't even need curl in it).
87100COPY --chown=stackable:stackable --from=kafka-builder /stackable/kafka_${SCALA}-${PRODUCT} /stackable/kafka_${SCALA}-${PRODUCT}
101+ COPY --chown=stackable:stackable --from=kafka-builder /stackable/kafka_${SCALA}-${PRODUCT}.cdx.json /stackable/kafka_${SCALA}-${PRODUCT}.cdx.json
88102COPY --chown=stackable:stackable --from=kafka-builder /stackable/jmx/ /stackable/jmx/
89103COPY --chown=stackable:stackable --from=kcat /stackable/kcat-${KCAT}/kcat /stackable/bin/kcat-${KCAT}
90104COPY --chown=stackable:stackable --from=kcat /licenses /licenses
0 commit comments