NIFI-4057 Docker Image is twice as large as necessary

* Merging unnecessary layers
  * MAINTAINER is deprecated
  * Using JRE as base since JDK is not necessary
  * Set GID=1000 since openjdk image already defines 50
  * Add ability to specify Apache mirror site to reduce load on Apache Archive
  * Created templates directory since this is not included in the binary

This closes #1910.

Signed-off-by: Aldrin Piri <aldrin@apache.org>
This commit is contained in:
Jordan Moore 2017-06-11 14:22:51 -05:00 committed by Aldrin Piri
parent a9529adab1
commit 3da8b94ddd
No known key found for this signature in database
GPG Key ID: 531AEBAA4CFE5D00
4 changed files with 48 additions and 41 deletions

View File

@ -20,12 +20,17 @@ if [ -n "$1" ]; then
DOCKER_UID="$1" DOCKER_UID="$1"
fi fi
DOCKER_GID=50 DOCKER_GID=1000
if [ -n "$2" ]; then if [ -n "$2" ]; then
DOCKER_GID="$2" DOCKER_GID="$2"
fi fi
MIRROR=https://archive.apache.org/dist
if [ -n "$3" ]; then
MIRROR="$3"
fi
DOCKER_IMAGE="$(egrep -v '(^#|^\s*$|^\s*\t*#)' DockerImage.txt)" DOCKER_IMAGE="$(egrep -v '(^#|^\s*$|^\s*\t*#)' DockerImage.txt)"
NIFI_IMAGE_VERSION="$(echo $DOCKER_IMAGE | cut -d : -f 2)" NIFI_IMAGE_VERSION="$(echo $DOCKER_IMAGE | cut -d : -f 2)"
echo "Building NiFi Image: '$DOCKER_IMAGE' Version: $NIFI_IMAGE_VERSION" echo "Building NiFi Image: '$DOCKER_IMAGE' Version: $NIFI_IMAGE_VERSION Mirror: $MIRROR"
docker build --build-arg UID="$DOCKER_UID" --build-arg GID="$DOCKER_GID" --build-arg NIFI_VERSION="$NIFI_IMAGE_VERSION" -t $DOCKER_IMAGE . docker build --build-arg UID="$DOCKER_UID" --build-arg GID="$DOCKER_GID" --build-arg NIFI_VERSION="$NIFI_IMAGE_VERSION" --build-arg MIRROR="$MIRROR" -t $DOCKER_IMAGE .

View File

@ -16,37 +16,38 @@
# under the License. # under the License.
# #
FROM openjdk:8 FROM openjdk:8-jre
MAINTAINER Apache NiFi <dev@nifi.apache.org> LABEL maintainer "Apache NiFi <dev@nifi.apache.org>"
ARG UID=1000 ARG UID=1000
ARG GID=50 ARG GID=1000
ARG NIFI_VERSION=1.4.0 ARG NIFI_VERSION=1.4.0
ARG MIRROR=https://archive.apache.org/dist
ENV NIFI_BASE_DIR /opt/nifi ENV NIFI_BASE_DIR /opt/nifi
ENV NIFI_HOME $NIFI_BASE_DIR/nifi-$NIFI_VERSION ENV NIFI_HOME=$NIFI_BASE_DIR/nifi-$NIFI_VERSION \
ENV NIFI_BINARY_URL https://archive.apache.org/dist/nifi/$NIFI_VERSION/nifi-$NIFI_VERSION-bin.tar.gz NIFI_BINARY_URL=/nifi/$NIFI_VERSION/nifi-$NIFI_VERSION-bin.tar.gz
# Setup NiFi user # Setup NiFi 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` \
RUN useradd --shell /bin/bash -u $UID -g $GID -m nifi && useradd --shell /bin/bash -u $UID -g $GID -m nifi \
RUN mkdir -p $NIFI_HOME && mkdir -p $NIFI_HOME/conf/templates \
&& chown -R nifi:nifi $NIFI_BASE_DIR
# Download, validate, and expand Apache NiFi binary.
RUN curl -fSL $NIFI_BINARY_URL -o $NIFI_BASE_DIR/nifi-$NIFI_VERSION-bin.tar.gz \
&& echo "$(curl $NIFI_BINARY_URL.sha256) *$NIFI_BASE_DIR/nifi-$NIFI_VERSION-bin.tar.gz" | sha256sum -c - \
&& tar -xvzf $NIFI_BASE_DIR/nifi-$NIFI_VERSION-bin.tar.gz -C $NIFI_BASE_DIR \
&& rm $NIFI_BASE_DIR/nifi-$NIFI_VERSION-bin.tar.gz
RUN chown -R nifi:nifi $NIFI_HOME
# Web HTTP Port
EXPOSE 8080
# Remote Site-To-Site Port
EXPOSE 8181
USER nifi USER nifi
# Download, validate, and expand Apache NiFi binary.
RUN curl -fSL $MIRROR/$NIFI_BINARY_URL -o $NIFI_BASE_DIR/nifi-$NIFI_VERSION-bin.tar.gz \
&& echo "$(curl https://archive.apache.org/dist/$NIFI_BINARY_URL.sha256) *$NIFI_BASE_DIR/nifi-$NIFI_VERSION-bin.tar.gz" | sha256sum -c - \
&& tar -xvzf $NIFI_BASE_DIR/nifi-$NIFI_VERSION-bin.tar.gz -C $NIFI_BASE_DIR \
&& rm $NIFI_BASE_DIR/nifi-$NIFI_VERSION-bin.tar.gz \
&& chown -R nifi:nifi $NIFI_HOME
# Web HTTP Port & Remote Site-to-Site Ports
EXPOSE 8080 8181
WORKDIR $NIFI_HOME
# Startup NiFi # Startup NiFi
CMD $NIFI_HOME/bin/nifi.sh run ENTRYPOINT ["bin/nifi.sh"]
CMD ["run"]

View File

@ -16,11 +16,11 @@
# under the License. # under the License.
# #
FROM openjdk:8 FROM openjdk:8-jre
MAINTAINER Apache NiFi <dev@nifi.apache.org> LABEL maintainer "Apache NiFi <dev@nifi.apache.org>"
ARG UID=1000 ARG UID=1000
ARG GID=50 ARG GID=1000
ARG NIFI_VERSION ARG NIFI_VERSION
ARG NIFI_BINARY ARG NIFI_BINARY
@ -28,20 +28,21 @@ ENV NIFI_BASE_DIR /opt/nifi
ENV NIFI_HOME $NIFI_BASE_DIR/nifi-$NIFI_VERSION ENV NIFI_HOME $NIFI_BASE_DIR/nifi-$NIFI_VERSION
# Setup NiFi user # Setup NiFi 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` \
RUN useradd --shell /bin/bash -u $UID -g $GID -m nifi && useradd --shell /bin/bash -u $UID -g $GID -m nifi \
RUN mkdir -p $NIFI_HOME && mkdir -p $NIFI_HOME/conf/templates \
&& chown -R nifi:nifi $NIFI_BASE_DIR
ADD $NIFI_BINARY $NIFI_BASE_DIR ADD $NIFI_BINARY $NIFI_BASE_DIR
RUN chown -R nifi:nifi $NIFI_HOME RUN chown -R nifi:nifi $NIFI_HOME
# Web HTTP Port
EXPOSE 8080
# Remote Site-To-Site Port
EXPOSE 8181
USER nifi USER nifi
# Web HTTP Port & Remote Site-to-Site Ports
EXPOSE 8080 8181
WORKDIR $NIFI_HOME
# Startup NiFi # Startup NiFi
CMD $NIFI_HOME/bin/nifi.sh run ENTRYPOINT ["bin/nifi.sh"]
CMD ["run"]

View File

@ -24,7 +24,7 @@ language governing permissions and limitations under the License. -->
<packaging>pom</packaging> <packaging>pom</packaging>
<properties> <properties>
<nifi.version>1.2.0-SNAPSHOT</nifi.version> <nifi.version>1.4.0-SNAPSHOT</nifi.version>
</properties> </properties>
<profiles> <profiles>