NIFI-10820 Change Docker base image to eclipse-temurin

NIFI-9656 Change Docker images to use Java 11

This closes #6673

Signed-off-by: Chris Sampson <chris.sampson82@gmail.com>
Signed-off-by: David Handermann <exceptionfactory@apache.org>
This commit is contained in:
Kevin Doran 2022-11-16 23:03:15 -05:00 committed by Chris Sampson
parent 214bd2f00c
commit 78f206a811
22 changed files with 262 additions and 193 deletions

View File

@ -16,7 +16,7 @@
# under the License. # under the License.
# #
FROM eclipse-temurin:8-jre FROM eclipse-temurin:11-jre
LABEL maintainer="Apache NiFi <dev@nifi.apache.org>" LABEL maintainer="Apache NiFi <dev@nifi.apache.org>"
LABEL site="https://nifi.apache.org" LABEL site="https://nifi.apache.org"
@ -26,15 +26,12 @@ ARG MINIFI_C2_VERSION=1.19.0
ARG MIRROR=https://archive.apache.org/dist ARG MIRROR=https://archive.apache.org/dist
ENV MINIFI_C2_BASE_DIR /opt/minifi-c2 ENV MINIFI_C2_BASE_DIR /opt/minifi-c2
ENV MINIFI_C2_HOME ${MINIFI_C2_BASE_DIR}/minifi-c2-${MINIFI_C2_VERSION} ENV MINIFI_C2_HOME ${MINIFI_C2_BASE_DIR}/minifi-c2-current
ENV MINIFI_C2_BINARY minifi-c2-${MINIFI_C2_VERSION}-bin.zip ENV MINIFI_C2_BINARY minifi-c2-${MINIFI_C2_VERSION}-bin.zip
ENV MINIFI_C2_BINARY_PATH nifi/${MINIFI_C2_VERSION}/${MINIFI_C2_BINARY} ENV MINIFI_C2_BINARY_PATH nifi/${MINIFI_C2_VERSION}/${MINIFI_C2_BINARY}
ENV MINIFI_C2_BINARY_URL ${MIRROR}/${MINIFI_C2_BINARY_PATH} ENV MINIFI_C2_BINARY_URL ${MIRROR}/${MINIFI_C2_BINARY_PATH}
# Setup MiNiFi user RUN mkdir -p ${MINIFI_C2_BASE_DIR}
RUN addgroup -gid $GID c2 || groupmod -n c2 $(getent group $GID | cut -d: -f1)
RUN useradd -r -g c2 c2
RUN mkdir -p $MINIFI_C2_HOME
# Download, validate, and expand Apache MiNiFi C2 binary. # Download, validate, and expand Apache MiNiFi C2 binary.
RUN apt-get update \ RUN apt-get update \
@ -43,14 +40,18 @@ RUN apt-get update \
&& curl -fSL $MINIFI_C2_BINARY_URL -o $MINIFI_C2_BASE_DIR/${MINIFI_C2_BINARY} \ && curl -fSL $MINIFI_C2_BINARY_URL -o $MINIFI_C2_BASE_DIR/${MINIFI_C2_BINARY} \
&& echo "$(curl $MINIFI_C2_BINARY_URL.sha256) *$MINIFI_C2_BASE_DIR/${MINIFI_C2_BINARY}" | sha256sum -c - \ && echo "$(curl $MINIFI_C2_BINARY_URL.sha256) *$MINIFI_C2_BASE_DIR/${MINIFI_C2_BINARY}" | sha256sum -c - \
&& unzip $MINIFI_C2_BASE_DIR/${MINIFI_C2_BINARY} -d $MINIFI_C2_BASE_DIR \ && unzip $MINIFI_C2_BASE_DIR/${MINIFI_C2_BINARY} -d $MINIFI_C2_BASE_DIR \
&& rm $MINIFI_C2_BASE_DIR/${MINIFI_C2_BINARY} && rm $MINIFI_C2_BASE_DIR/${MINIFI_C2_BINARY} \
&& groupadd -g ${GID} c2 \
RUN chown -R c2:c2 $MINIFI_C2_HOME && 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}
USER c2 USER c2
#Default http port #Default http port
EXPOSE 10090 EXPOSE 10090
WORKDIR ${MINIFI_C2_HOME}
# Startup MiNiFi C2 # Startup MiNiFi C2
CMD $MINIFI_C2_HOME/bin/c2.sh ENTRYPOINT ["./bin/c2.sh", "run"]

View File

@ -16,7 +16,7 @@
# under the License. # under the License.
# #
FROM eclipse-temurin:8-jre FROM eclipse-temurin:11-jre
LABEL maintainer="Apache NiFi <dev@nifi.apache.org>" LABEL maintainer="Apache NiFi <dev@nifi.apache.org>"
LABEL site="https://nifi.apache.org" LABEL site="https://nifi.apache.org"
@ -26,20 +26,30 @@ ARG MINIFI_C2_VERSION
ARG MINIFI_C2_BINARY ARG MINIFI_C2_BINARY
ENV MINIFI_C2_BASE_DIR /opt/minifi-c2 ENV MINIFI_C2_BASE_DIR /opt/minifi-c2
ENV MINIFI_C2_HOME $MINIFI_C2_BASE_DIR/minifi-c2-$MINIFI_C2_VERSION ENV MINIFI_C2_BINARY_NAME minifi-c2-${MINIFI_C2_VERSION}-bin.zip
ENV MINIFI_C2_HOME ${MINIFI_C2_BASE_DIR}/minifi-c2-current
# Setup MiNiFi C2 user RUN mkdir -p ${MINIFI_C2_BASE_DIR}
RUN addgroup -gid $GID c2 || groupmod -n c2 $(getent group $GID | cut -d: -f1) COPY $MINIFI_C2_BINARY $MINIFI_C2_BASE_DIR
RUN useradd -r -g c2 c2
RUN mkdir -p $MINIFI_C2_HOME
ADD $MINIFI_C2_BINARY $MINIFI_C2_BASE_DIR RUN apt-get update \
RUN chown -R c2:c2 $MINIFI_C2_HOME && apt-get install -y unzip \
&& apt-get -y autoremove \
&& apt-get clean autoclean \
&& 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}
USER c2 USER c2
#Default http port #Default http port
EXPOSE 10090 EXPOSE 10090
# Startup MiNiFi c2 WORKDIR ${MINIFI_C2_HOME}
CMD $MINIFI_C2_HOME/bin/c2.sh run
# Startup MiNiFi C2
ENTRYPOINT ["./bin/c2.sh", "run"]

View File

@ -40,37 +40,45 @@ limitations under the License.
<build> <build>
<plugins> <plugins>
<plugin> <plugin>
<groupId>com.spotify</groupId> <artifactId>maven-antrun-plugin</artifactId>
<artifactId>docker-maven-plugin</artifactId> <version>3.0.0</version>
<version>0.4.13</version>
<executions> <executions>
<execution> <execution>
<phase>package</phase> <id>copy-assembly-for-docker</id>
<goals> <goals>
<goal>build</goal> <goal>run</goal>
</goals> </goals>
<phase>process-sources</phase>
<configuration>
<target name="copy assembly for docker image build">
<copy todir="${project.basedir}/target" overwrite="true" flatten="true">
<fileset dir="${project.basedir}/../minifi-c2-assembly/target" includes="*.zip">
<include name="*.zip" />
</fileset>
</copy>
</target>
</configuration>
</execution> </execution>
</executions> </executions>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<executions>
<execution>
<configuration> <configuration>
<imageName>apacheminific2</imageName> <dockerfile>dockermaven/Dockerfile</dockerfile>
<dockerDirectory>${project.basedir}/dockermaven</dockerDirectory>
<imageTags>
<imageTag>${minifi.c2.version}</imageTag>
</imageTags>
<buildArgs> <buildArgs>
<UID>1000</UID> <UID>1000</UID>
<GID>1000</GID> <GID>1000</GID>
<MINIFI_C2_VERSION>${minifi.c2.version}</MINIFI_C2_VERSION> <MINIFI_C2_VERSION>${minifi.c2.version}</MINIFI_C2_VERSION>
<MINIFI_C2_BINARY>minifi-c2-${minifi.c2.version}-bin.tar.gz</MINIFI_C2_BINARY> <MINIFI_C2_BINARY>target/minifi-c2-${minifi.c2.version}-bin.zip</MINIFI_C2_BINARY>
</buildArgs> </buildArgs>
<resources> <repository>apacheminific2</repository>
<resource> <tag>${minifi.c2.version}</tag>
<targetPath>/</targetPath>
<directory>${project.basedir}/../minifi-c2-assembly/target</directory>
<include>minifi-c2-${minifi.c2.version}-bin.tar.gz</include>
</resource>
</resources>
</configuration> </configuration>
</execution>
</executions>
</plugin> </plugin>
</plugins> </plugins>
</build> </build>

View File

@ -16,7 +16,7 @@
# under the License. # under the License.
# #
FROM eclipse-temurin:8-jre FROM eclipse-temurin:11-jre
LABEL maintainer="Apache NiFi <dev@nifi.apache.org>" LABEL maintainer="Apache NiFi <dev@nifi.apache.org>"
LABEL site="https://nifi.apache.org" LABEL site="https://nifi.apache.org"
@ -31,11 +31,7 @@ ENV MINIFI_BINARY minifi-${MINIFI_VERSION}-bin.zip
ENV MINIFI_BINARY_PATH nifi/${MINIFI_VERSION}/${MINIFI_BINARY} ENV MINIFI_BINARY_PATH nifi/${MINIFI_VERSION}/${MINIFI_BINARY}
ENV MINIFI_BINARY_URL ${MIRROR}/${MINIFI_BINARY_PATH} ENV MINIFI_BINARY_URL ${MIRROR}/${MINIFI_BINARY_PATH}
# Setup MiNiFi user
RUN addgroup -gid $GID minifi || groupmod -n minifi $(getent group $GID | cut -d: -f1)
RUN useradd -r -g minifi minifi
RUN mkdir -p $MINIFI_BASE_DIR RUN mkdir -p $MINIFI_BASE_DIR
ADD sh/ ${MINIFI_BASE_DIR}/scripts/ ADD sh/ ${MINIFI_BASE_DIR}/scripts/
# Download, validate, and expand Apache MiNiFi binary. # Download, validate, and expand Apache MiNiFi binary.
@ -46,11 +42,15 @@ RUN apt-get update \
&& echo "$(curl $MINIFI_BINARY_URL.sha256) *$MINIFI_BASE_DIR/${MINIFI_BINARY}" | sha256sum -c - \ && echo "$(curl $MINIFI_BINARY_URL.sha256) *$MINIFI_BASE_DIR/${MINIFI_BINARY}" | sha256sum -c - \
&& unzip $MINIFI_BASE_DIR/${MINIFI_BINARY} -d $MINIFI_BASE_DIR \ && unzip $MINIFI_BASE_DIR/${MINIFI_BINARY} -d $MINIFI_BASE_DIR \
&& rm $MINIFI_BASE_DIR/${MINIFI_BINARY} \ && rm $MINIFI_BASE_DIR/${MINIFI_BINARY} \
&& ln -s $MINIFI_BASE_DIR/minifi-$MINIFI_VERSION $MINIFI_HOME && groupadd -g ${GID} minifi \
&& useradd --shell /bin/bash -u ${UID} -g ${GID} -m minifi \
RUN chown -R -L minifi:minifi $MINIFI_HOME && ln -s $MINIFI_BASE_DIR/minifi-$MINIFI_VERSION $MINIFI_HOME \
&& chown -R -L minifi:minifi ${MINIFI_BASE_DIR} \
&& chmod -R +x ${MINIFI_BASE_DIR}/scripts/*.sh
USER minifi USER minifi
WORKDIR ${MINIFI_HOME}
# Startup MiNiFi # Startup MiNiFi
CMD ${MINIFI_BASE_DIR}/scripts/start.sh ENTRYPOINT ["../scripts/start.sh"]

View File

@ -17,7 +17,7 @@
# #
ARG IMAGE_NAME=eclipse-temurin ARG IMAGE_NAME=eclipse-temurin
ARG IMAGE_TAG=8-jre ARG IMAGE_TAG=11-jre
FROM ${IMAGE_NAME}:${IMAGE_TAG} FROM ${IMAGE_NAME}:${IMAGE_TAG}
LABEL maintainer="Apache NiFi <dev@nifi.apache.org>" LABEL maintainer="Apache NiFi <dev@nifi.apache.org>"
LABEL site="https://nifi.apache.org" LABEL site="https://nifi.apache.org"
@ -27,20 +27,32 @@ ARG UID
ARG GID ARG GID
ARG MINIFI_VERSION ARG MINIFI_VERSION
ARG MINIFI_BINARY ARG MINIFI_BINARY
ARG MINIFI_SCRIPTS
ENV MINIFI_BASE_DIR /opt/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
# Setup MiNiFi user
RUN addgroup -gid $GID minifi || groupmod -n minifi $(getent group $GID | cut -d: -f1)
RUN useradd -r -g minifi minifi
RUN mkdir -p $MINIFI_BASE_DIR RUN mkdir -p $MINIFI_BASE_DIR
COPY $MINIFI_BINARY $MINIFI_BASE_DIR
ADD $MINIFI_SCRIPTS ${MINIFI_BASE_DIR}/scripts
ADD $MINIFI_BINARY $MINIFI_BASE_DIR RUN apt-get update \
RUN ln -s $MINIFI_BASE_DIR/minifi-$MINIFI_VERSION $MINIFI_HOME && apt-get install -y unzip \
RUN chown -R -L minifi:minifi $MINIFI_HOME && apt-get -y autoremove \
&& apt-get clean autoclean \
&& 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 \
&& chmod -R +x ${MINIFI_BASE_DIR}/scripts/*.sh
USER minifi USER minifi
WORKDIR ${MINIFI_HOME}
# Startup MiNiFi # Startup MiNiFi
CMD $MINIFI_HOME/bin/minifi.sh run ENTRYPOINT ["../scripts/start.sh"]

View File

@ -31,7 +31,7 @@ limitations under the License.
<properties> <properties>
<minifi.version>${project.version}</minifi.version> <minifi.version>${project.version}</minifi.version>
<docker.image.name>eclipse-temurin</docker.image.name> <docker.image.name>eclipse-temurin</docker.image.name>
<docker.image.tag>8-jre</docker.image.tag> <docker.image.tag>11-jre</docker.image.tag>
</properties> </properties>
<profiles> <profiles>
@ -41,39 +41,64 @@ limitations under the License.
<build> <build>
<plugins> <plugins>
<plugin> <plugin>
<groupId>com.spotify</groupId> <artifactId>maven-antrun-plugin</artifactId>
<artifactId>docker-maven-plugin</artifactId> <version>3.0.0</version>
<version>0.4.13</version>
<executions> <executions>
<execution> <execution>
<phase>package</phase> <id>copy-scripts-for-docker</id>
<phase>process-sources</phase>
<configuration>
<target name="copy docker scripts for image build">
<copy todir="${project.basedir}/target/sh" overwrite="true" flatten="true">
<fileset dir="${project.basedir}/dockerhub/sh" includes="*.sh">
<include name="*.sh" />
</fileset>
</copy>
</target>
</configuration>
<goals> <goals>
<goal>build</goal> <goal>run</goal>
</goals>
</execution>
<execution>
<id>copy-assembly-for-docker</id>
<phase>process-sources</phase>
<configuration>
<target name="copy assembly for image build">
<copy todir="${project.basedir}/target" overwrite="true" flatten="true">
<fileset dir="${project.basedir}/../minifi-assembly/target" includes="*.zip">
<include name="*.zip" />
</fileset>
</copy>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals> </goals>
</execution> </execution>
</executions> </executions>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<executions>
<execution>
<configuration> <configuration>
<imageName>apacheminifi</imageName> <dockerfile>dockermaven/Dockerfile</dockerfile>
<dockerDirectory>${project.basedir}/dockermaven</dockerDirectory>
<imageTags>
<imageTag>${minifi.version}</imageTag>
</imageTags>
<buildArgs> <buildArgs>
<IMAGE_NAME>${docker.image.name}</IMAGE_NAME> <IMAGE_NAME>${docker.image.name}</IMAGE_NAME>
<IMAGE_TAG>${docker.image.tag}</IMAGE_TAG> <IMAGE_TAG>${docker.image.tag}</IMAGE_TAG>
<UID>1000</UID> <UID>1000</UID>
<GID>1000</GID> <GID>1000</GID>
<MINIFI_VERSION>${minifi.version}</MINIFI_VERSION> <MINIFI_VERSION>${minifi.version}</MINIFI_VERSION>
<MINIFI_BINARY>minifi-${minifi.version}-bin.tar.gz</MINIFI_BINARY> <MINIFI_BINARY>target/minifi-${minifi.version}-bin.zip</MINIFI_BINARY>
<MINIFI_SCRIPTS>target/sh</MINIFI_SCRIPTS>
</buildArgs> </buildArgs>
<resources> <repository>apacheminifi</repository>
<resource> <tag>${minifi.version}</tag>
<targetPath>/</targetPath>
<directory>${project.basedir}/../minifi-assembly/target</directory>
<include>minifi-${minifi.version}-bin.tar.gz</include>
</resource>
</resources>
</configuration> </configuration>
</execution>
</executions>
</plugin> </plugin>
</plugins> </plugins>
</build> </build>

View File

@ -15,8 +15,9 @@
# specific language governing permissions and limitations # specific language governing permissions and limitations
# under the License. # under the License.
# #
ARG IMAGE_NAME=openjdk
ARG IMAGE_TAG=8-jre ARG IMAGE_NAME=eclipse-temurin
ARG IMAGE_TAG=11-jre
FROM ${IMAGE_NAME}:${IMAGE_TAG} FROM ${IMAGE_NAME}:${IMAGE_TAG}
ARG MAINTAINER="Apache NiFi <dev@nifi.apache.org>" ARG MAINTAINER="Apache NiFi <dev@nifi.apache.org>"
LABEL maintainer="${MAINTAINER}" LABEL maintainer="${MAINTAINER}"
@ -34,7 +35,6 @@ ARG NIFI_TOOLKIT_BINARY_PATH=${NIFI_TOOLKIT_BINARY_PATH:-/nifi/${DISTRO_PATH}/ni
ENV NIFI_BASE_DIR=/opt/nifi ENV NIFI_BASE_DIR=/opt/nifi
ENV NIFI_HOME ${NIFI_BASE_DIR}/nifi-current ENV NIFI_HOME ${NIFI_BASE_DIR}/nifi-current
ENV NIFI_TOOLKIT_HOME ${NIFI_BASE_DIR}/nifi-toolkit-current ENV NIFI_TOOLKIT_HOME ${NIFI_BASE_DIR}/nifi-toolkit-current
ENV NIFI_PID_DIR=${NIFI_HOME}/run ENV NIFI_PID_DIR=${NIFI_HOME}/run
ENV NIFI_LOG_DIR=${NIFI_HOME}/logs ENV NIFI_LOG_DIR=${NIFI_HOME}/logs
@ -47,7 +47,10 @@ RUN groupadd -g ${GID} nifi || groupmod -n nifi `getent group ${GID} | cut -d: -
&& mkdir -p ${NIFI_BASE_DIR} \ && mkdir -p ${NIFI_BASE_DIR} \
&& chown -R nifi:nifi ${NIFI_BASE_DIR} \ && chown -R nifi:nifi ${NIFI_BASE_DIR} \
&& apt-get update \ && apt-get update \
&& apt-get install -y jq xmlstarlet procps && apt-get install -y jq xmlstarlet procps unzip \
&& apt-get -y autoremove \
&& apt-get clean autoclean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
USER nifi USER nifi

View File

@ -15,6 +15,12 @@
## Latest changes ## Latest changes
### 1.19.0
- Changed base image to eclipse-temurin:11-jre as openjdk:8-jre is no longer maintained
- This also change the image to use Java 11 instead of Java 8
- As a benefit, the NiFi image now supports arm64 platforms in addition to amd64/x86_64
### 1.14.0 ### 1.14.0
- Updated default container configuration to use HTTPS with Single User Authentication - Updated default container configuration to use HTTPS with Single User Authentication

View File

@ -21,12 +21,9 @@
<artifactId>dockerhub</artifactId> <artifactId>dockerhub</artifactId>
<properties> <properties>
<docker.image.name>openjdk</docker.image.name>
<docker.image.tag>8-jre</docker.image.tag>
<docker.maintainer><![CDATA[Apache NiFi <dev@nifi.apache.org>]]></docker.maintainer>
<!-- files need to exist at https://archive.apache.org/dist/nifi/${docker.nifi.version}/nifi-[toolkit-]${docker.nifi.version}-bin.zip <!-- files need to exist at https://archive.apache.org/dist/nifi/${docker.nifi.version}/nifi-[toolkit-]${docker.nifi.version}-bin.zip
so this version needs to be *before* the current ${project.version} --> so this version needs to be *before* the current ${project.version} -->
<docker.nifi.version>1.14.0</docker.nifi.version> <docker.nifi.version>1.19.0</docker.nifi.version>
</properties> </properties>
<profiles> <profiles>

View File

@ -16,11 +16,12 @@
# under the License. # under the License.
# #
ARG IMAGE_NAME=openjdk ARG IMAGE_NAME=eclipse-temurin
ARG IMAGE_TAG=8-jre ARG IMAGE_TAG=11-jre
FROM ${IMAGE_NAME}:${IMAGE_TAG} AS artifactbase FROM ${IMAGE_NAME}:${IMAGE_TAG} AS artifactbase
ARG MAINTAINER="Apache NiFi <dev@nifi.apache.org>" ARG MAINTAINER="Apache NiFi <dev@nifi.apache.org>"
LABEL maintainer="${MAINTAINER}" LABEL maintainer="${MAINTAINER}"
LABEL site="https://nifi.apache.org"
ARG NIFI_VERSION ARG NIFI_VERSION
ARG NIFI_BINARY ARG NIFI_BINARY
@ -34,7 +35,9 @@ ENV NIFI_PID_DIR=${NIFI_HOME}/run
ENV NIFI_LOG_DIR=${NIFI_HOME}/logs ENV NIFI_LOG_DIR=${NIFI_HOME}/logs
ADD ${NIFI_SCRIPTS} ${NIFI_BASE_DIR}/scripts/ ADD ${NIFI_SCRIPTS} ${NIFI_BASE_DIR}/scripts/
RUN chmod -R +x ${NIFI_BASE_DIR}/scripts/*.sh RUN chmod -R +x ${NIFI_BASE_DIR}/scripts/*.sh \
&& apt-get update \
&& apt-get install -y unzip
COPY $NIFI_BINARY $NIFI_BASE_DIR COPY $NIFI_BINARY $NIFI_BASE_DIR
RUN unzip ${NIFI_BASE_DIR}/nifi-${NIFI_VERSION}-bin.zip -d ${NIFI_BASE_DIR} \ RUN unzip ${NIFI_BASE_DIR}/nifi-${NIFI_VERSION}-bin.zip -d ${NIFI_BASE_DIR} \
@ -74,7 +77,10 @@ ENV NIFI_LOG_DIR=${NIFI_HOME}/logs
RUN groupadd -g ${GID} nifi || groupmod -n nifi `getent group ${GID} | cut -d: -f1` \ RUN groupadd -g ${GID} nifi || groupmod -n nifi `getent group ${GID} | cut -d: -f1` \
&& useradd --shell /bin/bash -u ${UID} -g ${GID} -m nifi \ && useradd --shell /bin/bash -u ${UID} -g ${GID} -m nifi \
&& apt-get update \ && apt-get update \
&& apt-get install -y jq xmlstarlet procps && apt-get install -y jq xmlstarlet procps \
&& apt-get -y autoremove \
&& apt-get clean autoclean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
COPY --chown=nifi:nifi --from=artifactbase $NIFI_BASE_DIR $NIFI_BASE_DIR COPY --chown=nifi:nifi --from=artifactbase $NIFI_BASE_DIR $NIFI_BASE_DIR

View File

@ -21,10 +21,10 @@ TAG=$1
VERSION=$2 VERSION=$2
trap '{ docker ps -qaf Name="nifi-${TAG}-integration-test" | xargs --no-run-if-empty docker rm -f; }' EXIT trap '{ docker rm -f nifi-${TAG}-integration-test; }' EXIT
echo "Deleting any existing nifi-${TAG}-integration-test containers" echo "Deleting any existing nifi-${TAG}-integration-test containers"
docker ps -qaf Name="nifi-${TAG}-integration-test" | xargs --no-run-if-empty docker rm -f; docker rm -f nifi-${TAG}-integration-test;
echo "Checking that all files are owned by NiFi" echo "Checking that all files are owned by NiFi"
test -z "$(docker run --rm --entrypoint /bin/bash "apache/nifi:${TAG}" -c "find /opt/nifi ! -user nifi")" test -z "$(docker run --rm --entrypoint /bin/bash "apache/nifi:${TAG}" -c "find /opt/nifi ! -user nifi")"

View File

@ -20,12 +20,6 @@
<artifactId>dockermaven</artifactId> <artifactId>dockermaven</artifactId>
<properties>
<docker.image.name>openjdk</docker.image.name>
<docker.image.tag>8-jre</docker.image.tag>
<docker.maintainer><![CDATA[Apache NiFi <dev@nifi.apache.org>]]></docker.maintainer>
</properties>
<profiles> <profiles>
<profile> <profile>
<id>docker</id> <id>docker</id>
@ -71,7 +65,7 @@
<version>3.0.0</version> <version>3.0.0</version>
<executions> <executions>
<execution> <execution>
<id>copy-sh-for-docker</id> <id>copy-scripts-for-docker</id>
<phase>process-sources</phase> <phase>process-sources</phase>
<configuration> <configuration>
<target name="copy docker scripts to nifi-docker for image build"> <target name="copy docker scripts to nifi-docker for image build">
@ -87,7 +81,7 @@
</goals> </goals>
</execution> </execution>
<execution> <execution>
<id>copy-for-docker</id> <id>copy-nifi-assembly-for-docker</id>
<phase>process-sources</phase> <phase>process-sources</phase>
<configuration> <configuration>
<target name="copy assembly to nifi-docker for image build"> <target name="copy assembly to nifi-docker for image build">
@ -103,7 +97,7 @@
</goals> </goals>
</execution> </execution>
<execution> <execution>
<id>copy-toolkit-for-docker</id> <id>copy-nifi-toolkit-assembly-for-docker</id>
<phase>process-sources</phase> <phase>process-sources</phase>
<configuration> <configuration>
<target name="copy toolkit assembly to nifi-docker for image build"> <target name="copy toolkit assembly to nifi-docker for image build">

View File

@ -23,6 +23,9 @@ language governing permissions and limitations under the License. -->
<properties> <properties>
<nifi.version>${project.version}</nifi.version> <nifi.version>${project.version}</nifi.version>
<docker.image.name>eclipse-temurin</docker.image.name>
<docker.image.tag>11-jre</docker.image.tag>
<docker.maintainer><![CDATA[Apache NiFi <dev@nifi.apache.org>]]></docker.maintainer>
</properties> </properties>
<modules> <modules>
@ -30,28 +33,4 @@ language governing permissions and limitations under the License. -->
<module>dockerhub</module> <module>dockerhub</module>
</modules> </modules>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.13</version>
<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
<configuration>
<tag>${nifi.version}</tag>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project> </project>

View File

@ -16,13 +16,13 @@
# under the License. # under the License.
# #
FROM openjdk:8-jdk-slim FROM eclipse-temurin:11-jre
LABEL maintainer="Apache NiFi <dev@nifi.apache.org>" LABEL maintainer="Apache NiFi <dev@nifi.apache.org>"
LABEL site="https://nifi.apache.org" LABEL site="https://nifi.apache.org"
ARG UID=1000 ARG UID=1000
ARG GID=1000 ARG GID=1000
ARG NIFI_REGISTRY_VERSION=1.17.0 ARG NIFI_REGISTRY_VERSION=1.19.0
ARG MIRROR=https://archive.apache.org/dist ARG MIRROR=https://archive.apache.org/dist
ENV NIFI_REGISTRY_BASE_DIR /opt/nifi-registry ENV NIFI_REGISTRY_BASE_DIR /opt/nifi-registry
@ -32,13 +32,17 @@ ENV NIFI_REGISTRY_BINARY_PATH nifi/${NIFI_REGISTRY_VERSION}/${NIFI_REGISTRY_BINA
ENV NIFI_REGISTRY_BINARY_URL ${MIRROR}/${NIFI_REGISTRY_BINARY_PATH} ENV NIFI_REGISTRY_BINARY_URL ${MIRROR}/${NIFI_REGISTRY_BINARY_PATH}
ADD sh/ ${NIFI_REGISTRY_BASE_DIR}/scripts/ ADD sh/ ${NIFI_REGISTRY_BASE_DIR}/scripts/
RUN chmod -R +x ${NIFI_REGISTRY_BASE_DIR}/scripts/*.sh
# Setup NiFi-Registry user # Setup NiFi-Registry user
RUN groupadd -g ${GID} nifi || groupmod -n nifi `getent group ${GID} | cut -d: -f1` \ RUN groupadd -g ${GID} nifi || groupmod -n nifi `getent group ${GID} | cut -d: -f1` \
&& useradd --shell /bin/bash -u ${UID} -g ${GID} -m nifi \ && useradd --shell /bin/bash -u ${UID} -g ${GID} -m nifi \
&& chown -R nifi:nifi ${NIFI_REGISTRY_BASE_DIR} \ && chown -R nifi:nifi ${NIFI_REGISTRY_BASE_DIR} \
&& apt-get update -y \ && apt-get update -y \
&& apt-get install -y curl jq xmlstarlet unzip && apt-get install -y curl jq xmlstarlet unzip \
&& apt-get -y autoremove \
&& apt-get clean autoclean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
USER nifi USER nifi
@ -57,4 +61,4 @@ EXPOSE 18080 18443
WORKDIR ${NIFI_REGISTRY_HOME} WORKDIR ${NIFI_REGISTRY_HOME}
# Apply configuration and start NiFi Registry # Apply configuration and start NiFi Registry
CMD ${NIFI_REGISTRY_BASE_DIR}/scripts/start.sh ENTRYPOINT ["../scripts/start.sh"]

View File

@ -16,16 +16,20 @@
# under the License. # under the License.
# #
FROM openjdk:8-jre AS artifactbase FROM eclipse-temurin:11-jre AS artifactbase
LABEL maintainer="Apache NiFi <dev@nifi.apache.org>" LABEL maintainer="Apache NiFi <dev@nifi.apache.org>"
LABEL site="https://nifi.apache.org"
ARG NIFI_REGISTRY_BINARY ARG NIFI_REGISTRY_BINARY
ARG NIFI_REGISTRY_VERSION=1.14.0 ARG NIFI_REGISTRY_VERSION=1.19.0
ENV NIFI_REGISTRY_BASE_DIR /opt/nifi-registry ENV NIFI_REGISTRY_BASE_DIR /opt/nifi-registry
ENV NIFI_REGISTRY_HOME ${NIFI_REGISTRY_BASE_DIR}/nifi-registry-current ENV NIFI_REGISTRY_HOME ${NIFI_REGISTRY_BASE_DIR}/nifi-registry-current
ADD sh/ ${NIFI_REGISTRY_BASE_DIR}/scripts/ ADD sh/ ${NIFI_REGISTRY_BASE_DIR}/scripts/
RUN chmod -R +x ${NIFI_REGISTRY_BASE_DIR}/scripts/*.sh \
&& apt-get update \
&& apt-get install -y unzip
COPY $NIFI_REGISTRY_BINARY $NIFI_REGISTRY_BASE_DIR COPY $NIFI_REGISTRY_BINARY $NIFI_REGISTRY_BASE_DIR
RUN unzip ${NIFI_REGISTRY_BASE_DIR}/nifi-registry-${NIFI_REGISTRY_VERSION}-bin.zip -d ${NIFI_REGISTRY_BASE_DIR} \ RUN unzip ${NIFI_REGISTRY_BASE_DIR}/nifi-registry-${NIFI_REGISTRY_VERSION}-bin.zip -d ${NIFI_REGISTRY_BASE_DIR} \
@ -34,7 +38,7 @@ RUN unzip ${NIFI_REGISTRY_BASE_DIR}/nifi-registry-${NIFI_REGISTRY_VERSION}-bin.z
&& ln -s ${NIFI_REGISTRY_HOME} ${NIFI_REGISTRY_BASE_DIR}/nifi-registry-${NIFI_REGISTRY_VERSION} && ln -s ${NIFI_REGISTRY_HOME} ${NIFI_REGISTRY_BASE_DIR}/nifi-registry-${NIFI_REGISTRY_VERSION}
FROM openjdk:8-jre FROM eclipse-temurin:11-jre
LABEL maintainer="Apache NiFi Registry <dev@nifi.apache.org>" LABEL maintainer="Apache NiFi Registry <dev@nifi.apache.org>"
LABEL site="https://nifi.apache.org" LABEL site="https://nifi.apache.org"
@ -51,8 +55,10 @@ RUN groupadd -g ${GID} nifi || groupmod -n nifi `getent group ${GID} | cut -d: -
&& useradd --shell /bin/bash -u ${UID} -g ${GID} -m nifi \ && useradd --shell /bin/bash -u ${UID} -g ${GID} -m nifi \
&& chown -R nifi:nifi ${NIFI_REGISTRY_BASE_DIR} \ && chown -R nifi:nifi ${NIFI_REGISTRY_BASE_DIR} \
&& apt-get update \ && apt-get update \
&& apt-get install -y jq xmlstarlet procps && apt-get install -y jq xmlstarlet procps \
&& apt-get -y autoremove \
&& apt-get clean autoclean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
USER nifi USER nifi

View File

@ -22,7 +22,10 @@ VERSION=$2
container_name=nifi-registry-${TAG}-integration-test container_name=nifi-registry-${TAG}-integration-test
trap "{ docker ps -qaf Name=${container_name} | xargs docker rm -f; }" EXIT trap "{ docker rm -f ${container_name}; }" EXIT
echo "Deleting any existing ${container_name} containers"
docker rm -f ${container_name};
echo "Checking that all files are owned by NiFi" echo "Checking that all files are owned by NiFi"
test -z $(docker run --rm --entrypoint /bin/bash apache/nifi-registry:${TAG} -c "find /opt/nifi-registry ! -user nifi") test -z $(docker run --rm --entrypoint /bin/bash apache/nifi-registry:${TAG} -c "find /opt/nifi-registry ! -user nifi")
@ -40,11 +43,15 @@ docker run -d --name ${container_name} apache/nifi-registry:${TAG}
IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${container_name}) IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${container_name})
for i in $(seq 1 10) :; do for i in $(seq 1 10) :; do
if docker exec ${container_name} bash -c "ss -ntl | grep 18080"; then echo "Iteration: ${i}"
if docker exec ${container_name} bash -c " echo Running < /dev/tcp/${IP}/18080"; then
break break
fi fi
sleep 10 sleep 10
done done
echo "Checking NiFi Registry REST API Access"
test "200" = "$(docker exec "${container_name}" bash -c "curl -s -o /dev/null -w %{http_code} -k http://${IP}:18080/nifi-registry-api/access")"
echo "Stopping NiFi Registry container" echo "Stopping NiFi Registry container"
time docker stop ${container_name} time docker stop ${container_name}

View File

@ -28,13 +28,8 @@
<plugin> <plugin>
<groupId>com.spotify</groupId> <groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId> <artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.5</version>
<executions> <executions>
<execution> <execution>
<id>default</id>
<goals>
<goal>build</goal>
</goals>
<configuration> <configuration>
<buildArgs> <buildArgs>
<UID>1000</UID> <UID>1000</UID>

View File

@ -16,29 +16,34 @@
# under the License. # under the License.
# #
FROM openjdk:8-jre-alpine FROM eclipse-temurin:11-jre
LABEL maintainer="Apache NiFi <dev@nifi.apache.org>" LABEL maintainer="Apache NiFi <dev@nifi.apache.org>"
LABEL site="https://nifi.apache.org"
ARG UID=1000 ARG UID=1000
ARG GID=1000 ARG GID=1000
ARG NIFI_TOOLKIT_VERSION= ARG NIFI_TOOLKIT_VERSION=1.19.0
ARG NIFI_TOOLKIT_BINARY=nifi-toolkit-${NIFI_TOOLKIT_VERSION}-bin.tar.gz ARG NIFI_TOOLKIT_BINARY=nifi-toolkit-${NIFI_TOOLKIT_VERSION}-bin.zip
ENV NIFI_TOOLKIT_BASE_DIR=/opt/nifi-toolkit ENV NIFI_TOOLKIT_BASE_DIR=/opt/nifi-toolkit
ENV NIFI_TOOLKIT_HOME=${NIFI_TOOLKIT_BASE_DIR}/nifi-toolkit-${NIFI_TOOLKIT_VERSION} ENV NIFI_TOOLKIT_HOME=${NIFI_TOOLKIT_BASE_DIR}/nifi-toolkit-current
ADD ./sh/docker-entrypoint.sh /opt/sh/docker-entrypoint.sh RUN mkdir -p ${NIFI_TOOLKIT_BASE_DIR}
COPY $NIFI_TOOLKIT_BINARY $NIFI_TOOLKIT_BASE_DIR
ADD sh/ ${NIFI_TOOLKIT_BASE_DIR}/scripts
# Fix docker-entrypoint perms as per https://issues.apache.org/jira/browse/MRESOURCES-236 and Setup NiFi user RUN chmod -R +x ${NIFI_TOOLKIT_BASE_DIR}/scripts/*.sh \
RUN apk add --update curl bash jq openssl \ && apt-get update \
&& rm -rf /var/cache/apk/* \ && apt-get install -y unzip jq openssl \
&& chmod +x /opt/sh/docker-entrypoint.sh \ && apt-get -y autoremove \
&& addgroup -g $GID nifi \ && apt-get clean autoclean \
&& adduser -D -s /bin/ash -u $UID -G nifi nifi \ && rm -rf /var/lib/apt/lists/* \
&& mkdir -p ${NIFI_TOOLKIT_BASE_DIR} && groupadd -g ${GID} nifi \
&& useradd --shell /bin/bash -u ${UID} -g ${GID} -m nifi \
ADD ${NIFI_TOOLKIT_BINARY} ${NIFI_TOOLKIT_BASE_DIR} && unzip ${NIFI_TOOLKIT_BASE_DIR}/${NIFI_TOOLKIT_BINARY} -d ${NIFI_TOOLKIT_BASE_DIR} \
RUN chown -R nifi:nifi ${NIFI_TOOLKIT_BASE_DIR} && rm ${NIFI_TOOLKIT_BASE_DIR}/${NIFI_TOOLKIT_BINARY} \
&& ln -s ${NIFI_TOOLKIT_BASE_DIR}/nifi-toolkit-${NIFI_TOOLKIT_VERSION} ${NIFI_TOOLKIT_HOME} \
&& chown -R nifi:nifi ${NIFI_TOOLKIT_BASE_DIR}
USER nifi USER nifi
@ -48,4 +53,4 @@ EXPOSE 9443
WORKDIR ${NIFI_TOOLKIT_HOME} WORKDIR ${NIFI_TOOLKIT_HOME}
# Startup NiFi # Startup NiFi
ENTRYPOINT ["/opt/sh/docker-entrypoint.sh"] ENTRYPOINT ["../scripts/docker-entrypoint.sh"]

View File

@ -16,13 +16,13 @@
# under the License. # under the License.
# #
FROM openjdk:8-jre-alpine FROM eclipse-temurin:11-jre
LABEL maintainer="Apache NiFi <dev@nifi.apache.org>" LABEL maintainer="Apache NiFi <dev@nifi.apache.org>"
LABEL site="https://nifi.apache.org" LABEL site="https://nifi.apache.org"
ARG UID=1000 ARG UID=1000
ARG GID=1000 ARG GID=1000
ARG NIFI_TOOLKIT_VERSION=1.17.0 ARG NIFI_TOOLKIT_VERSION=1.19.0
ARG MIRROR=https://archive.apache.org/dist ARG MIRROR=https://archive.apache.org/dist
ENV NIFI_TOOLKIT_BASE_DIR /opt/nifi-toolkit ENV NIFI_TOOLKIT_BASE_DIR /opt/nifi-toolkit
@ -31,14 +31,18 @@ ENV NIFI_TOOLKIT_BINARY nifi-toolkit-${NIFI_TOOLKIT_VERSION}-bin.zip
ENV NIFI_TOOLKIT_BINARY_PATH nifi/${NIFI_TOOLKIT_VERSION}/${NIFI_TOOLKIT_BINARY} ENV NIFI_TOOLKIT_BINARY_PATH nifi/${NIFI_TOOLKIT_VERSION}/${NIFI_TOOLKIT_BINARY}
ENV NIFI_TOOLKIT_BINARY_URL ${MIRROR}/${NIFI_TOOLKIT_BINARY_PATH} ENV NIFI_TOOLKIT_BINARY_URL ${MIRROR}/${NIFI_TOOLKIT_BINARY_PATH}
ADD sh/docker-entrypoint.sh /opt/sh/docker-entrypoint.sh ADD sh/ ${NIFI_TOOLKIT_BASE_DIR}/scripts
# Setup NiFi user # Setup NiFi user
# Download, validate, and expand Apache NiFi Toolkit binary. # Download, validate, and expand Apache NiFi Toolkit binary.
RUN apk add --update curl bash jq openssl \ RUN chmod -R +x ${NIFI_TOOLKIT_BASE_DIR}/scripts/*.sh \
&& rm -rf /var/cache/apk/* \ && apt-get update \
&& addgroup -g $GID nifi \ && apt-get install -y unzip jq openssl \
&& adduser -D -s /bin/ash -u $UID -G nifi nifi \ && apt-get -y autoremove \
&& apt-get clean autoclean \
&& rm -rf /var/lib/apt/lists/* \
&& groupadd -g ${GID} nifi \
&& useradd --shell /bin/bash -u ${UID} -g ${GID} -m nifi \
&& mkdir -p ${NIFI_TOOLKIT_BASE_DIR} \ && mkdir -p ${NIFI_TOOLKIT_BASE_DIR} \
&& curl -fSL ${NIFI_TOOLKIT_BINARY_URL} -o ${NIFI_TOOLKIT_BASE_DIR}/${NIFI_TOOLKIT_BINARY} \ && curl -fSL ${NIFI_TOOLKIT_BINARY_URL} -o ${NIFI_TOOLKIT_BASE_DIR}/${NIFI_TOOLKIT_BINARY} \
&& echo "$(curl ${NIFI_TOOLKIT_BINARY_URL}.sha256) *${NIFI_TOOLKIT_BASE_DIR}/${NIFI_TOOLKIT_BINARY}" | sha256sum -c - \ && echo "$(curl ${NIFI_TOOLKIT_BINARY_URL}.sha256) *${NIFI_TOOLKIT_BASE_DIR}/${NIFI_TOOLKIT_BINARY}" | sha256sum -c - \
@ -54,4 +58,4 @@ EXPOSE 9443
WORKDIR ${NIFI_TOOLKIT_HOME} WORKDIR ${NIFI_TOOLKIT_HOME}
# Startup NiFi # Startup NiFi
ENTRYPOINT ["/opt/sh/docker-entrypoint.sh"] ENTRYPOINT ["../scripts/docker-entrypoint.sh"]

View File

@ -1,4 +1,4 @@
#!/bin/sh -e #!/bin/bash -e
# Licensed to the Apache Software Foundation (ASF) under one # Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file # or more contributor license agreements. See the NOTICE file
@ -22,7 +22,7 @@ toolkit_path="${NIFI_TOOLKIT_HOME}/bin"
program=$1 program=$1
function print_help() { print_help () {
if [ -z ${program} ]; then if [ -z ${program} ]; then
echo "No program option specified." echo "No program option specified."
else else

View File

@ -175,8 +175,8 @@ language governing permissions and limitations under the License. -->
<configuration> <configuration>
<target name="copy assembly to docker for image build"> <target name="copy assembly to docker for image build">
<copy todir="${project.basedir}/target/docker-build" overwrite="true" flatten="true"> <copy todir="${project.basedir}/target/docker-build" overwrite="true" flatten="true">
<fileset dir="${project.basedir}/target" includes="*.tar.gz"> <fileset dir="${project.basedir}/target" includes="*.zip">
<include name="*.tar.gz" /> <include name="*.zip" />
</fileset> </fileset>
</copy> </copy>
</target> </target>
@ -190,14 +190,8 @@ language governing permissions and limitations under the License. -->
<plugin> <plugin>
<groupId>com.spotify</groupId> <groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId> <artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.5</version>
<executions> <executions>
<execution> <execution>
<id>default</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
<configuration> <configuration>
<contextDirectory>./target/docker-build</contextDirectory> <contextDirectory>./target/docker-build</contextDirectory>
<buildArgs> <buildArgs>

13
pom.xml
View File

@ -808,6 +808,19 @@
</execution> </execution>
</executions> </executions>
</plugin> </plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.13</version>
<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin> <plugin>
<groupId>org.codehaus.mojo</groupId> <groupId>org.codehaus.mojo</groupId>
<artifactId>rpm-maven-plugin</artifactId> <artifactId>rpm-maven-plugin</artifactId>