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:
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
- Crie um Dockerfile e um docker-compose.yml com as configurações acima.
- Crie uma pasta
nifi
com subpastas para os repositórios e outras necessidades. - Copie os arquivos de configuração necessários para a pasta
nifi/conf
utilize dockercp nifi:/opt/nifi/nifi-current/conf ./nifi/conf
- Execute
docker-compose -f .\docker-compose.yaml up
para iniciar a aplicação.
- Acesse a interface do usuário do Apache NiFi em
http://localhost:8080/nifi
.
- Use
docker-compose down
para parar e remover o contêiner.