You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ex...@apache.org on 2022/11/22 21:35:49 UTC

[nifi] 01/03: NIFI-10857 Fixed MiNiFi-C2 ITs and optimized MiNiFi and MiNiFi-C2 Docker images

This is an automated email from the ASF dual-hosted git repository.

exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git

commit 8b71edd61ad1360f5c8c09c27cdf6dff63d21925
Author: Ferenc Kis <br...@gmail.com>
AuthorDate: Fri Nov 18 14:30:51 2022 +0100

    NIFI-10857 Fixed MiNiFi-C2 ITs and optimized MiNiFi and MiNiFi-C2 Docker images
    
    This closes #6702
    
    Signed-off-by: David Handermann <ex...@apache.org>
---
 minifi/minifi-c2/minifi-c2-assembly/pom.xml        | 18 ++++++++++
 .../src/main/assembly/dependencies.xml             | 18 ++++++++++
 .../minifi-c2-docker/dockermaven/Dockerfile        | 36 ++++++++++++++-----
 minifi/minifi-c2/minifi-c2-docker/pom.xml          |  1 +
 minifi/minifi-docker/dockermaven/Dockerfile        | 42 +++++++++++++++-------
 minifi/minifi-docker/pom.xml                       |  1 +
 6 files changed, 94 insertions(+), 22 deletions(-)

diff --git a/minifi/minifi-c2/minifi-c2-assembly/pom.xml b/minifi/minifi-c2/minifi-c2-assembly/pom.xml
index 6cd3dec9e6..8ce028d491 100644
--- a/minifi/minifi-c2/minifi-c2-assembly/pom.xml
+++ b/minifi/minifi-c2/minifi-c2-assembly/pom.xml
@@ -180,6 +180,24 @@ limitations under the License.
             <version>${project.version}</version>
             <type>war</type>
         </dependency>
+
+        <!-- dependencies for jaxb/activation/annotation for running MiNiFi on Java 11 -->
+        <!-- TODO: remove these once minimum Java version is 11 -->
+        <dependency>
+            <groupId>jakarta.xml.bind</groupId>
+            <artifactId>jakarta.xml.bind-api</artifactId>
+            <version>${jakarta.xml.bind-api.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish.jaxb</groupId>
+            <artifactId>jaxb-runtime</artifactId>
+            <version>${jaxb.runtime.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.annotation</groupId>
+            <artifactId>javax.annotation-api</artifactId>
+            <version>${javax.annotation-api.version}</version>
+        </dependency>
     </dependencies>
     <profiles>
         <profile>
diff --git a/minifi/minifi-c2/minifi-c2-assembly/src/main/assembly/dependencies.xml b/minifi/minifi-c2/minifi-c2-assembly/src/main/assembly/dependencies.xml
index 026200c66a..bbfcf4c180 100644
--- a/minifi/minifi-c2/minifi-c2-assembly/src/main/assembly/dependencies.xml
+++ b/minifi/minifi-c2/minifi-c2-assembly/src/main/assembly/dependencies.xml
@@ -45,6 +45,24 @@
                 <include>*:war</include>
             </includes>
         </dependencySet>
+
+        <!-- Write out the bootstrap libs for java11 to its own dir -->
+        <!-- TODO: remove this dependency set once minimum Java version is 11 -->
+        <dependencySet>
+            <scope>runtime</scope>
+            <useProjectArtifact>false</useProjectArtifact>
+            <outputDirectory>lib/java11</outputDirectory>
+            <directoryMode>0770</directoryMode>
+            <fileMode>0664</fileMode>
+            <useTransitiveFiltering>true</useTransitiveFiltering>
+            <includes>
+                <include>org.glassfish.jaxb:jaxb-runtime</include>
+                <include>jakarta.xml.bind:jakarta.xml.bind-api</include>
+                <include>javax.annotation:javax.annotation-api</include>
+                <include>com.sun.activation:jakarta.activation</include>
+                <include>jakarta.activation:jakarta.activation-api</include>
+            </includes>
+        </dependencySet>
     </dependencySets>
     <fileSets>
         <fileSet>
diff --git a/minifi/minifi-c2/minifi-c2-docker/dockermaven/Dockerfile b/minifi/minifi-c2/minifi-c2-docker/dockermaven/Dockerfile
index 754a1ed72f..6af6d02243 100644
--- a/minifi/minifi-c2/minifi-c2-docker/dockermaven/Dockerfile
+++ b/minifi/minifi-c2/minifi-c2-docker/dockermaven/Dockerfile
@@ -16,17 +16,19 @@
 # under the License.
 #
 
-FROM eclipse-temurin:11-jre
-LABEL maintainer="Apache NiFi <de...@nifi.apache.org>"
-LABEL site="https://nifi.apache.org"
+ARG IMAGE_NAME=eclipse-temurin
+ARG IMAGE_TAG=11-jre
+FROM ${IMAGE_NAME}:${IMAGE_TAG} as builder
+LABEL stage=builder
 
 ARG UID=1000
 ARG GID=1000
 ARG MINIFI_C2_VERSION
+ARG MINIFI_C2_BINARY_NAME
 ARG MINIFI_C2_BINARY
 
+ENV MINIFI_C2_USER c2
 ENV MINIFI_C2_BASE_DIR /opt/minifi-c2
-ENV MINIFI_C2_BINARY_NAME minifi-c2-${MINIFI_C2_VERSION}-bin.zip
 ENV MINIFI_C2_HOME ${MINIFI_C2_BASE_DIR}/minifi-c2-current
 
 RUN mkdir -p ${MINIFI_C2_BASE_DIR}
@@ -39,12 +41,28 @@ RUN apt-get update \
     && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
     && unzip ${MINIFI_C2_BASE_DIR}/${MINIFI_C2_BINARY_NAME} -d ${MINIFI_C2_BASE_DIR} \
     && rm ${MINIFI_C2_BASE_DIR}/${MINIFI_C2_BINARY_NAME} \
-    && groupadd -g ${GID} c2 \
-    && useradd --shell /bin/bash -u ${UID} -g ${GID} -m c2 \
-    && ln -s $MINIFI_C2_BASE_DIR/minifi-c2-$MINIFI_C2_VERSION $MINIFI_C2_HOME \
-    && chown -R -L c2:c2 ${MINIFI_C2_BASE_DIR}
+    && groupadd -g ${GID} ${MINIFI_C2_USER} \
+    && useradd --shell /bin/bash -u ${UID} -g ${GID} -m ${MINIFI_C2_USER} \
+    && ln -s ${MINIFI_C2_BASE_DIR}/minifi-c2-${MINIFI_C2_VERSION} ${MINIFI_C2_HOME} \
+    && chown -R -L ${MINIFI_C2_USER}:${MINIFI_C2_USER} ${MINIFI_C2_BASE_DIR}
+
+FROM ${IMAGE_NAME}:${IMAGE_TAG}
+LABEL maintainer="Apache NiFi <de...@nifi.apache.org>"
+LABEL site="https://nifi.apache.org"
+
+ARG UID
+ARG GID
+
+ENV MINIFI_C2_USER c2
+ENV MINIFI_C2_BASE_DIR /opt/minifi-c2
+ENV MINIFI_C2_HOME ${MINIFI_C2_BASE_DIR}/minifi-c2-current
+
+RUN groupadd -g ${GID} ${MINIFI_C2_USER} \
+    && useradd --shell /bin/bash -u ${UID} -g ${GID} -m ${MINIFI_C2_USER}
+
+COPY --from=builder ${MINIFI_C2_BASE_DIR} ${MINIFI_C2_BASE_DIR}
 
-USER c2
+USER ${MINIFI_C2_USER}
 
 #Default http port
 EXPOSE 10090
diff --git a/minifi/minifi-c2/minifi-c2-docker/pom.xml b/minifi/minifi-c2/minifi-c2-docker/pom.xml
index ab111c3623..ad7033c12c 100644
--- a/minifi/minifi-c2/minifi-c2-docker/pom.xml
+++ b/minifi/minifi-c2/minifi-c2-docker/pom.xml
@@ -72,6 +72,7 @@ limitations under the License.
                                         <UID>1000</UID>
                                         <GID>1000</GID>
                                         <MINIFI_C2_VERSION>${minifi.c2.version}</MINIFI_C2_VERSION>
+                                        <MINIFI_C2_BINARY_NAME>minifi-c2-${minifi.c2.version}-bin.zip</MINIFI_C2_BINARY_NAME>
                                         <MINIFI_C2_BINARY>target/minifi-c2-${minifi.c2.version}-bin.zip</MINIFI_C2_BINARY>
                                     </buildArgs>
                                     <repository>apacheminific2</repository>
diff --git a/minifi/minifi-docker/dockermaven/Dockerfile b/minifi/minifi-docker/dockermaven/Dockerfile
index 7d8e947d2f..2f6880fb42 100644
--- a/minifi/minifi-docker/dockermaven/Dockerfile
+++ b/minifi/minifi-docker/dockermaven/Dockerfile
@@ -18,24 +18,24 @@
 
 ARG IMAGE_NAME=eclipse-temurin
 ARG IMAGE_TAG=11-jre
-FROM ${IMAGE_NAME}:${IMAGE_TAG}
-LABEL maintainer="Apache NiFi <de...@nifi.apache.org>"
-LABEL site="https://nifi.apache.org"
+FROM ${IMAGE_NAME}:${IMAGE_TAG} as builder
+LABEL stage=builder
 
 # Values are set by Maven
 ARG UID
 ARG GID
 ARG MINIFI_VERSION
+ARG MINIFI_BINARY_NAME
 ARG MINIFI_BINARY
 ARG MINIFI_SCRIPTS
 
+ENV MINIFI_USER minifi
 ENV MINIFI_BASE_DIR /opt/minifi
-ENV MINIFI_BINARY_NAME minifi-${MINIFI_VERSION}-bin.zip
-ENV MINIFI_HOME $MINIFI_BASE_DIR/minifi-current
+ENV MINIFI_HOME ${MINIFI_BASE_DIR}/minifi-current
 
-RUN  mkdir -p $MINIFI_BASE_DIR
-COPY $MINIFI_BINARY $MINIFI_BASE_DIR
-ADD $MINIFI_SCRIPTS ${MINIFI_BASE_DIR}/scripts
+RUN mkdir -p ${MINIFI_BASE_DIR}
+COPY ${MINIFI_BINARY} ${MINIFI_BASE_DIR}
+ADD ${MINIFI_SCRIPTS} ${MINIFI_BASE_DIR}/scripts
 
 RUN apt-get update \
     && apt-get install -y unzip \
@@ -44,13 +44,29 @@ RUN apt-get update \
     && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
     && unzip ${MINIFI_BASE_DIR}/${MINIFI_BINARY_NAME} -d ${MINIFI_BASE_DIR} \
     && rm ${MINIFI_BASE_DIR}/${MINIFI_BINARY_NAME} \
-    && groupadd -g ${GID} minifi \
-    && useradd --shell /bin/bash -u ${UID} -g ${GID} -m minifi \
-    && ln -s $MINIFI_BASE_DIR/minifi-$MINIFI_VERSION $MINIFI_HOME \
-    && chown -R -L minifi:minifi $MINIFI_BASE_DIR \
+    && groupadd -g ${GID} ${MINIFI_USER} \
+    && useradd --shell /bin/bash -u ${UID} -g ${GID} -m ${MINIFI_USER} \
+    && ln -s ${MINIFI_BASE_DIR}/minifi-${MINIFI_VERSION} ${MINIFI_HOME} \
+    && chown -R ${MINIFI_USER}:${MINIFI_USER} ${MINIFI_BASE_DIR} \
     && chmod -R +x ${MINIFI_BASE_DIR}/scripts/*.sh
 
-USER minifi
+FROM ${IMAGE_NAME}:${IMAGE_TAG}
+LABEL maintainer="Apache NiFi <de...@nifi.apache.org>"
+LABEL site="https://nifi.apache.org"
+
+ARG UID
+ARG GID
+
+ENV MINIFI_USER minifi
+ENV MINIFI_BASE_DIR /opt/minifi
+ENV MINIFI_HOME ${MINIFI_BASE_DIR}/minifi-current
+
+RUN groupadd -g ${GID} ${MINIFI_USER} \
+    && useradd --shell /bin/bash -u ${UID} -g ${GID} -m ${MINIFI_USER}
+
+COPY --from=builder ${MINIFI_BASE_DIR} ${MINIFI_BASE_DIR}
+
+USER ${MINIFI_USER}
 
 WORKDIR ${MINIFI_HOME}
 
diff --git a/minifi/minifi-docker/pom.xml b/minifi/minifi-docker/pom.xml
index 1ad4f31aa4..771817608f 100644
--- a/minifi/minifi-docker/pom.xml
+++ b/minifi/minifi-docker/pom.xml
@@ -91,6 +91,7 @@ limitations under the License.
                                         <UID>1000</UID>
                                         <GID>1000</GID>
                                         <MINIFI_VERSION>${minifi.version}</MINIFI_VERSION>
+                                        <MINIFI_BINARY_NAME>minifi-${minifi.version}-bin.zip</MINIFI_BINARY_NAME>
                                         <MINIFI_BINARY>target/minifi-${minifi.version}-bin.zip</MINIFI_BINARY>
                                         <MINIFI_SCRIPTS>target/sh</MINIFI_SCRIPTS>
                                     </buildArgs>