Apache NiFi in Docker

shell csript to deploy NiFi

#!/bin/bash

# Passwords...
USER_PASSWORD="user_pass"
PGSQL_PASSWORD="PG_pass"
PGADMIN_PASSWORD="pgadmin_pass"

# Create network if it doesn't exist
if ! docker network inspect local_network &>/dev/null; then
  echo "Creating docker network 'local_network'..."
  docker network create --subnet=10.100.10.0/24 local_network
else
  echo "Docker network 'local_network' already exists."
fi

# Run apache-nifi container (for testing use "-e NIFI_WEB_PROXY_HOST=your_domain.ca:8443 \")
docker run -d --name apache-nifi --network local_network -p 8443:8443 \
  --restart unless-stopped \
  -e NIFI_WEB_PROXY_HOST=your_domain:8443 \
  -e SINGLE_USER_CREDENTIALS_USERNAME=admin \
  -e SINGLE_USER_CREDENTIALS_PASSWORD="$USER_PASSWORD" \
  -v /opt/nifi/data/dwh:/opt/nifi/nifi-current/dwh \
  apache/nifi:latest

# Run postgres-db container
docker run -d --name postgres-db --network local_network -p 5432:5432 \
  --restart unless-stopped \
  -e POSTGRES_PASSWORD="$PGSQL_PASSWORD" \
  -v /opt/nifi/data/postgres_data:/var/lib/postgresql/data \
  postgres:latest

# Run pgadmin container
docker run -d --name pgadmin --network local_network -p 5050:80 \
  --restart unless-stopped \
  -e PGADMIN_DEFAULT_EMAIL=pgadmin@your_domain.ca \
  -e PGADMIN_DEFAULT_PASSWORD="$PGADMIN_PASSWORD" \
  -v /opt/nifi/data/pgadmin:/var/lib/pgadmin \
  dpage/pgadmin4:latest

echo "All containers started."

# Now make sure the directory exists
docker exec apache-nifi mkdir -p /opt/nifi/nifi-current/some_dir_for_data_input

run it.

enjoy your Apache NiFi.