mirror of https://github.com/apache/nifi.git
NIFI-3260 Official Docker Image
Added baseline Docker image for NiFi This closes #1372. Signed-off-by: Aldrin Piri <aldrin@apache.org>
This commit is contained in:
parent
a794166d21
commit
c8f437e833
|
@ -0,0 +1,33 @@
|
|||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
Apache NiFi supports powerful and scalable directed graphs of data routing, transformation, and system mediation logic. Some of the high-level capabilities and objectives of Apache NiFi include:
|
||||
|
||||
* Web-based user interface
|
||||
* Seamless experience between design, control, feedback, and monitoring
|
||||
* Highly configurable
|
||||
* Loss tolerant vs guaranteed delivery
|
||||
* Low latency vs high throughput
|
||||
* Dynamic prioritization
|
||||
* Flow can be modified at runtime
|
||||
* Back pressure
|
||||
* Data Provenance
|
||||
* Track dataflow from beginning to end
|
||||
* Designed for extension
|
||||
* Build your own processors and more
|
||||
* Enables rapid development and effective testing
|
||||
* Secure
|
||||
* SSL, SSH, HTTPS, encrypted content, etc...
|
||||
* Multi-tenant authorization and internal authorization/policy management
|
|
@ -0,0 +1,19 @@
|
|||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# Place files you want to exclude from the docker build here similar to .gitignore https://docs.docker.com/engine/reference/builder/#dockerignore-file
|
||||
DockerBuild.sh
|
||||
DockerRun.sh
|
||||
DockerImage.txt
|
|
@ -0,0 +1,31 @@
|
|||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
#!/bin/bash
|
||||
|
||||
DOCKER_UID=1000
|
||||
if [ -n "$1" ]; then
|
||||
DOCKER_UID="$1"
|
||||
fi
|
||||
|
||||
DOCKER_GID=50
|
||||
if [ -n "$2" ]; then
|
||||
DOCKER_GID="$2"
|
||||
fi
|
||||
|
||||
DOCKER_IMAGE="$(egrep -v '(^#|^\s*$|^\s*\t*#)' DockerImage.txt)"
|
||||
NIFI_IMAGE_VERSION="$(echo $DOCKER_IMAGE | cut -d : -f 2)"
|
||||
echo "Building NiFi Image: '$DOCKER_IMAGE' Version: $NIFI_IMAGE_VERSION"
|
||||
docker build --build-arg UID="$DOCKER_UID" --build-arg GID="$DOCKER_GID" --build-arg NIFI_VERSION="$NIFI_IMAGE_VERSION" -t $DOCKER_IMAGE .
|
|
@ -0,0 +1,16 @@
|
|||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
apachenifi:1.1.1
|
|
@ -0,0 +1,19 @@
|
|||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
#!/bin/bash
|
||||
DOCKER_IMAGE="$(egrep -v '(^#|^\s*$|^\s*\t*#)' DockerImage.txt)"
|
||||
echo "Running Docker Image: $DOCKER_IMAGE"
|
||||
docker run -it -d -p 8080:8080 -p 8181:8181 $DOCKER_IMAGE
|
|
@ -0,0 +1,52 @@
|
|||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
|
||||
FROM java:8
|
||||
MAINTAINER Apache NiFi <dev@nifi.apache.org>
|
||||
|
||||
ARG UID
|
||||
ARG GID
|
||||
ARG NIFI_VERSION
|
||||
|
||||
ENV NIFI_BASE_DIR /opt/nifi
|
||||
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
|
||||
|
||||
# Setup NiFi user
|
||||
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
|
||||
RUN mkdir -p $NIFI_HOME
|
||||
|
||||
# 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
|
||||
|
||||
# Startup NiFi
|
||||
CMD $NIFI_HOME/bin/nifi.sh run
|
|
@ -0,0 +1,47 @@
|
|||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
|
||||
FROM java:8
|
||||
MAINTAINER Apache NiFi <dev@nifi.apache.org>
|
||||
|
||||
ARG UID
|
||||
ARG GID
|
||||
ARG NIFI_VERSION
|
||||
ARG NIFI_BINARY
|
||||
|
||||
ENV NIFI_BASE_DIR /opt/nifi
|
||||
ENV NIFI_HOME $NIFI_BASE_DIR/nifi-$NIFI_VERSION
|
||||
|
||||
# Setup NiFi user
|
||||
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
|
||||
RUN mkdir -p $NIFI_HOME
|
||||
|
||||
ADD $NIFI_BINARY $NIFI_BASE_DIR
|
||||
RUN chown -R nifi:nifi $NIFI_HOME
|
||||
|
||||
# Web HTTP Port
|
||||
EXPOSE 8080
|
||||
|
||||
# Remote Site-To-Site Port
|
||||
EXPOSE 8181
|
||||
|
||||
USER nifi
|
||||
|
||||
# Startup NiFi
|
||||
CMD $NIFI_HOME/bin/nifi.sh run
|
|
@ -0,0 +1,74 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
|
||||
license agreements. See the NOTICE file distributed with this work for additional
|
||||
information regarding copyright ownership. The ASF licenses this file to
|
||||
You under the Apache License, Version 2.0 (the "License"); you may not use
|
||||
this file except in compliance with the License. You may obtain a copy of
|
||||
the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
|
||||
by applicable law or agreed to in writing, software distributed under the
|
||||
License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
OF ANY KIND, either express or implied. See the License for the specific
|
||||
language governing permissions and limitations under the License. -->
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>org.apache.nifi</groupId>
|
||||
<artifactId>nifi</artifactId>
|
||||
<version>1.2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<groupId>org.apache.nifi</groupId>
|
||||
<artifactId>nifi-docker</artifactId>
|
||||
<version>1.2.0-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<properties>
|
||||
<nifi.version>1.2.0-SNAPSHOT</nifi.version>
|
||||
</properties>
|
||||
|
||||
<profiles>
|
||||
<!-- Profile for building official Docker images. Not bound to build phases since that would require anyone build to have the Docker engine installed on their machine -->
|
||||
<profile>
|
||||
<id>docker</id>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>com.spotify</groupId>
|
||||
<artifactId>docker-maven-plugin</artifactId>
|
||||
<version>0.4.13</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
<configuration>
|
||||
<imageName>apachenifi</imageName>
|
||||
<dockerDirectory>${project.basedir}/dockermaven</dockerDirectory>
|
||||
<imageTags>
|
||||
<imageTag>${nifi.version}</imageTag>
|
||||
</imageTags>
|
||||
<buildArgs>
|
||||
<UID>1000</UID>
|
||||
<GID>1000</GID>
|
||||
<NIFI_VERSION>${nifi.version}</NIFI_VERSION>
|
||||
<NIFI_BINARY>nifi-${nifi.version}-bin.tar.gz</NIFI_BINARY>
|
||||
</buildArgs>
|
||||
<resources>
|
||||
<resource>
|
||||
<targetPath>/</targetPath>
|
||||
<directory>${project.basedir}/../nifi-assembly/target</directory>
|
||||
<include>nifi-${nifi.version}-bin.tar.gz</include>
|
||||
</resource>
|
||||
</resources>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
</profiles>
|
||||
|
||||
</project>
|
2
pom.xml
2
pom.xml
|
@ -34,6 +34,7 @@ language governing permissions and limitations under the License. -->
|
|||
<module>nifi-maven-archetypes</module>
|
||||
<module>nifi-external</module>
|
||||
<module>nifi-toolkit</module>
|
||||
<module>nifi-docker</module>
|
||||
</modules>
|
||||
<url>http://nifi.apache.org</url>
|
||||
<organization>
|
||||
|
@ -106,7 +107,6 @@ language governing permissions and limitations under the License. -->
|
|||
<storm.version>1.0.1</storm.version>
|
||||
</properties>
|
||||
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>central</id>
|
||||
|
|
Loading…
Reference in New Issue