Conteúdo

Instalando o Apache NiFi no Docker

Neste artigo, você vai aprender como subir o Apache NiFi no Docker, que é uma plataforma que permite criar, executar e gerenciar aplicações usando contêineres. Você vai entender o que são os repositórios do Apache NiFi, como criar um Dockerfile e um docker-compose, e como executá-lo em um contêiner. Ao final deste artigo, você será capaz de:

  • Criar um Dockerfile para o Apache NiFi, que contém as instruções para construir uma imagem do Docker
  • Criar um docker-compose para o Apache NiFi, que contém as configurações para executar uma aplicação multi-contêiner
  • Executar o Apache NiFi em um contêiner, usando o Docker e o docker-compose
  • Acessar a interface de usuário do Apache NiFi, usando o navegador

Artigos Anteriores

Este artigo faz parte de uma série de artigos sobre arquitetura de integração com Apache NiFi. Se você ainda não leu os artigos anteriores, eu recomendo que você faça isso antes de continuar. Aqui estão os links dos artigos anteriores:

Curso de Arquitetura de Integração com Apache NiFi

Dockerfile para o Apache NiFi

Um Dockerfile é um arquivo que traz instruções para construir uma imagem de Docker. Essa imagem é um modelo para criar e rodar contêineres. No Dockerfile, você define o que é necessário para a imagem, como recursos, dependências, comandos e configurações.

Para criar um Dockerfile para o Apache NiFi, você pode utilizar o seguinte conteúdo:

FROM apache/nifi:latest

USER root
RUN mkdir -p /opt/nifi/drivers

RUN apt-get update && apt-get install -y curl 
RUN curl -L "https://go.microsoft.com/fwlink/?linkid=2166848" -o /opt/nifi/drivers/mssql-jdbc-9.4.0.jre8.jar

# Start Apache NiFi
CMD ["nifi.sh", "run"]

Esse Dockerfile estabelece uma imagem do Docker para o Apache NiFi com as seguintes características:

  • Usa a última versão da imagem oficial do Apache NiFi.
  • Cria uma pasta em /opt/nifi/drivers para guardar o driver JDBC do SQL Server.
  • Baixa o driver JDBC do SQL Server (um arquivo JAR) e o guarda nessa pasta. Esse driver é necessário para que o Apache NiFi se conecte a bancos de dados SQL Server.
  • Inicia o Apache NiFi usando o comando nifi.sh run.

Docker-compose para o Apache NiFi

O docker-compose é uma ferramenta que define e executa aplicações multi-contêineres usando um arquivo YAML, facilitando a criação, configuração e conexão dos contêineres que compõem uma aplicação.

Para criar o docker-compose para o Apache NiFi, você pode usar o seguinte conteúdo:

version: '3.8'
services:
  nifi:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: nifi01
    ports:
      - 8080:8080
    environment:
      - NIFI_WEB_HTTP_PORT=8080
    volumes:
      - ./nifi/database_repository:/opt/nifi/nifi-current/database_repository
      - ./nifi/flowfile_repository:/opt/nifi/nifi-current/flowfile_repository
      - ./nifi/content_repository:/opt/nifi/nifi-current/content_repository
      - ./nifi/provenance_repository:/opt/nifi/nifi-current/provenance_repository
      - ./nifi/state:/opt/nifi/nifi-current/state
      - ./nifi/logs:/opt/nifi/nifi-current/logs
      # Remover o comentário da linha abaixo após copiar o conteúdo da pasta conf para o volume mapeado
      # - ./nifi/conf:/opt/nifi/nifi-current/conf
      # - ./nifi/drivers:/opt/nifi/drivers
    networks:
      - treinamento
networks:
  treinamento:
    driver: bridge

Esse arquivo define uma aplicação multi-contêiner para o Apache NiFi, usando a seguinte lógica:

  • Utiliza a versão 3.8 do docker-compose, a mais recente no momento da escrita deste texto.
  • Define um serviço chamado nifi, que representa o contêiner do Apache NiFi.
  • O serviço nifi usa o Dockerfile da pasta atual para construir a imagem do Apache NiFi.
  • Define o nome do contêiner como nifi01.
  • Expõe a porta 8080 do contêiner para a porta 8080 do host, permitindo o acesso à interface do usuário do Apache NiFi.
  • Define uma variável de ambiente NIFI_WEB_HTTP_PORT igual a 8080.
  • Configura vários volumes para mapear diretórios do contêiner para o host, permitindo a persistência e o compartilhamento de dados.
  • Usa uma rede chamada treinamento do tipo bridge, facilitando a comunicação entre os contêineres na mesma rede.

Subindo o Apache NiFi em Container utilizando Docker-compose

  1. Crie um Dockerfile e um docker-compose.yml com as configurações acima.
  2. Crie uma pasta nifi com subpastas para os repositórios e outras necessidades.
  3. Copie os arquivos de configuração necessários para a pasta nifi/conf utilize docker cp nifi:/opt/nifi/nifi-current/conf ./nifi/conf
  4. Execute docker-compose -f .\docker-compose.yaml up para iniciar a aplicação.
    Curso de Arquitetura de Integração com Apache NiFi - Instalando o Apache NiFi no Docker
  5. Acesse a interface do usuário do Apache NiFi em http://localhost:8080/nifi.
    Curso de Arquitetura de Integração com Apache NiFi - Instalando o Apache NiFi no Docker
  6. Use docker-compose down para parar e remover o contêiner.

Referências Bibliográficas

Apache NiFi Documentation

Docker Hub

Tiago Tartari

Tiago Tartari

Eu ajudo e capacito pessoas e organizações a transformar problemas complexos em soluções práticas usando a tecnologia para atingir resultados extraordinários.

Histórias de sucesso

EximiaCo