Skip to content

Configuração

Apache Nifi

Docker Compose

docker-compose.yaml
version: "3.3"
services:
  apache-nifi: 
    build:
      context: .
      dockerfile: Dockerfile
    container_name: apache-nifi
    deploy:
      resources:
        limits:
          cpus: '0.8'
          memory: 4GB
    restart: unless-stopped
    ports:
      - "8443:8443"
    volumes: 
      - "./data:/opt/nifi/nifi-current/data-in"
      - "./scripts:/opt/nifi/nifi-current/scripts"
      - nifi_database:/opt/nifi/nifi-current/nifi_database
      - flow_storage:/opt/nifi/nifi-current/flow_storage
    networks:
      - mysql


volumes:
  nifi_database:
    name: nifi_database
  flow_storage:
    name: nifi_flow_storage
networks:
  mysql:
    external: true

Dockerfile

Dockerfile
FROM apache/nifi 

USER root 

# Instalando python no servidor.
RUN apt-get update && apt-get install python3 -y

USER nifi

WORKDIR /opt/nifi/nifi-current/

# Adicionando driver de conexão com o mysql.
RUN mkdir drivers
COPY apache/mysql-connector-j-8.0.33.jar drivers

# Aumentando memória da JVM para lidar com arquivos maiores.
RUN sed -i 's/512m/2048m/g' conf/bootstrap.conf

# Criando senha de acesso único ao apache.
RUN bin/nifi.sh set-single-user-credentials user apachenifi123

CMD bin/nifi.sh run

Rodando

Para rodar a imagem personalizada do apache nifi, com driver para conexão jdbc com o MySQL e usuário:

docker compose up -d

Banco de Dados

Docker Compose

docker-compose.yaml
version: "3.3"
services:
  mysql:
    image: mysql:8.0
    container_name: mysql
    restart: always
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=1
    volumes:
      - mysql:/var/lib/mysql
    networks:
      - mysql

volumes:
  mysql:
    external: true

networks:
  mysql:
    external: true

Scripts Iniciais

fisico.sql

controle.sql

Para limpar a base após os testes, basta executar o script:

apaga.sql