Skip to content

Fix/correção ambiente docker | 🛠️ **Infraestrutura: Correções na inicialização do ambiente Docker e customização do Kong**#5

Merged
LAMP-LUCAS merged 1 commit into
developfrom
fix/correcao-ambiente-docker
Sep 9, 2025
Merged

Fix/correção ambiente docker | 🛠️ **Infraestrutura: Correções na inicialização do ambiente Docker e customização do Kong**#5
LAMP-LUCAS merged 1 commit into
developfrom
fix/correcao-ambiente-docker

Conversation

@LAMP-LUCAS
Copy link
Copy Markdown
Owner

📋 Descrição

Este PR resolve diversos problemas que impediam a inicialização completa e estável do ambiente Docker, com foco especial na configuração do Kong e suas dependências. As mudanças garantem maior controle, segurança e capacidade de depuração durante o processo de boot do sistema.


🔧 Alterações Realizadas

docker-compose.yml

  • Imagem Customizada para Kong
    Os serviços kong e kong-migrations agora utilizam uma imagem construída localmente (build: ./kong/), permitindo ajustes específicos que não são possíveis na imagem pública.

  • 🩺 Healthcheck Corrigido
    O healthcheck do serviço sinapi_db foi ajustado para verificar corretamente o usuário e banco de dados kong, garantindo que o serviço só seja considerado saudável quando estiver realmente pronto.

  • 🐚 Script de Migração Ajustado
    Corrigida a sintaxe do laço until com a inclusão da cláusula do, resolvendo erro de shell que impedia a execução das migrações.

  • 📣 Logging Aprimorado
    O comando de bootstrap foi alterado para kong migrations bootstrap --vv, ativando o modo verbose para facilitar a identificação de falhas durante a inicialização.


kong/Dockerfile (novo)

  • 🏗️ Criação de Imagem Customizada
    Novo Dockerfile para o Kong, permitindo a inclusão de dependências ausentes na imagem oficial.

  • 🐘 Instalação do postgresql-client
    Adicionado o cliente PostgreSQL, necessário para o uso do comando pg_isready no script de migração.

  • 🔐 Gerenciamento de Permissões
    Uso temporário de USER root para instalação de pacotes, com retorno para USER kong ao final, seguindo boas práticas de segurança.


Dockerfile (API)

  • 🧬 Adição do Git
    O git foi incluído na imagem da API para permitir a instalação de dependências diretamente de repositórios Git.

docker/db/multiple-databases.sh

  • Formatação Final
    Adicionada uma nova linha ao final do arquivo para conformidade com padrões de formatação.

…-m 'Este commit corrige uma série de problemas que impediam a inicialização completa e estável do ambiente Docker, especialmente relacionados à configuração do Kong e suas dependências.

- **`docker-compose.yml`**:
  - **Uso de Imagem Customizada:** Os serviços `kong` e `kong-migrations` passam a usar uma imagem construída localmente (`build: ./kong/`) em vez da imagem pública, permitindo a customização necessária.
  - **Correção de Healthcheck:** O `healthcheck` do serviço `sinapi_db` foi ajustado para verificar o usuário e banco de dados corretos (`kong`), garantindo que o status de saúde do banco de dados seja verificado corretamente.
  - **Correção de Script de Migração:** A sintaxe do laço `until` no comando do `kong-migrations` foi corrigida com a adição da cláusula `do`, resolvendo um erro de shell que bloqueava a inicialização.
  - **Melhora no Logging:** O comando de bootstrap das migrações foi alterado para `kong migrations bootstrap --vv`, ativando o modo verbose para facilitar a depuração de problemas de inicialização.

- **`kong/Dockerfile` (Novo):**
  - **Criação de Imagem Customizada:** Um novo `Dockerfile` para o Kong foi criado para adicionar dependências que não existem na imagem oficial.
  - **Instalação do `postgresql-client`:** Adiciona o cliente do PostgreSQL, essencial para que o script de migração possa usar o comando `pg_isready` para verificar o status do banco de dados.
  - **Gerenciamento de Permissões:** Utiliza `USER root` para instalar as dependências e retorna para `USER kong` ao final, seguindo as boas práticas de segurança para evitar a execução do container com privilégios de root.

- **`Dockerfile` (API):**
  - **Adição do Git:** O `git` foi adicionado à imagem da API para permitir a instalação de dependências diretamente de repositórios Git, se necessário.

- **`docker/db/multiple-databases.sh`**:
  - **Formatação:** Adicionada uma nova linha ao final do arquivo para seguir as convenções de formatação de arquivos de texto.
@LAMP-LUCAS LAMP-LUCAS merged commit 6753eb7 into develop Sep 9, 2025
1 check passed
@LAMP-LUCAS LAMP-LUCAS deleted the fix/correcao-ambiente-docker branch September 9, 2025 13:16
LAMP-LUCAS added a commit that referenced this pull request Sep 17, 2025
* Feature/estrutura inicial | Estrutura inicial completa da AutoSINAPI API com FastAPI, Docker e Kong (#3)

* chore: adiciona configuração inicial do projeto

* chore(infra): configura ambiente de desenvolvimento com Docker e Kong

* feat(api): implementa estrutura inicial da API com FastAPI

* feat(worker): adiciona configuração do Celery para tarefas em background

* docs: adiciona documentação inicial e padrões de nomenclatura

* chore: adiciona arquivo de exemplo para variáveis de ambiente

* fixup! chore(infra): configura ambiente de desenvolvimento com Docker e Kong

* Feature/correção docker e api | 🚀 Correções e Expansões na Arquitetura da API AutoSINAPI (#4)

* chore: adiciona configuração inicial do projeto

* chore(infra): configura ambiente de desenvolvimento com Docker e Kong

* feat(api): implementa estrutura inicial da API com FastAPI

* feat(worker): adiciona configuração do Celery para tarefas em background

* docs: adiciona documentação inicial e padrões de nomenclatura

* chore: adiciona arquivo de exemplo para variáveis de ambiente

* fixup! chore(infra): configura ambiente de desenvolvimento com Docker e Kong

* fix(docker): Adiciona permissão de execução ao script de inicialização do DB

* feat(project): Refatora arquitetura e adiciona módulos de BI

Esta refatoração completa moderniza a arquitetura do projeto, introduzindo modularidade e novas funcionalidades de Business Intelligence.

Principais alterações:

- Centralização de configurações com Pydantic-Settings em 'api/config.py'.

- Atualização de dependências e adição do módulo 'autosinapi' via Git.

- Melhoria na orquestração do Docker com 'depends_on' e 'healthcheck' robustos.

- Refatoração completa dos módulos da API ('crud', 'main', 'schemas') para usar a nova configuração e desacoplar a lógica.

- Adição de três novos endpoints de BI:

  - Análise de Estrutura (Bill of Materials)

  - Cálculo de Hora-Homem

  - Curva ABC de Insumos

* feat(bi): Adiciona endpoint de otimização de custo

Cria o endpoint /bi/composicao/{codigo}/otimizar que retorna os N insumos de maior impacto financeiro em uma composição, reutilizando a lógica do BOM.

* feat(bi): Adiciona endpoint de análise de custo histórico

Cria o endpoint /bi/item/{tipo_item}/{codigo}/historico para visualizar a variação de preço/custo de um item ao longo do tempo. Adiciona a dependência python-dateutil para manipulação de datas.

* docs(project): Atualiza documentação e adiciona guia de contribuição

- Renomeia nomenclaturas.md para CONTRIBUTING.md e expande o conteúdo.

- Atualiza o README.md com as novas funcionalidades de BI.

- Adiciona o WorkPlan.md com o plano para as próximas funcionalidades.

* fix(infra): Corrige inicialização e configuração do ambiente Docker' -m 'Este commit corrige uma série de problemas que impediam a inicialização completa e estável do ambiente Docker, especialmente relacionados à configuração do Kong e suas dependências. (#5)

- **`docker-compose.yml`**:
  - **Uso de Imagem Customizada:** Os serviços `kong` e `kong-migrations` passam a usar uma imagem construída localmente (`build: ./kong/`) em vez da imagem pública, permitindo a customização necessária.
  - **Correção de Healthcheck:** O `healthcheck` do serviço `sinapi_db` foi ajustado para verificar o usuário e banco de dados corretos (`kong`), garantindo que o status de saúde do banco de dados seja verificado corretamente.
  - **Correção de Script de Migração:** A sintaxe do laço `until` no comando do `kong-migrations` foi corrigida com a adição da cláusula `do`, resolvendo um erro de shell que bloqueava a inicialização.
  - **Melhora no Logging:** O comando de bootstrap das migrações foi alterado para `kong migrations bootstrap --vv`, ativando o modo verbose para facilitar a depuração de problemas de inicialização.

- **`kong/Dockerfile` (Novo):**
  - **Criação de Imagem Customizada:** Um novo `Dockerfile` para o Kong foi criado para adicionar dependências que não existem na imagem oficial.
  - **Instalação do `postgresql-client`:** Adiciona o cliente do PostgreSQL, essencial para que o script de migração possa usar o comando `pg_isready` para verificar o status do banco de dados.
  - **Gerenciamento de Permissões:** Utiliza `USER root` para instalar as dependências e retorna para `USER kong` ao final, seguindo as boas práticas de segurança para evitar a execução do container com privilégios de root.

- **`Dockerfile` (API):**
  - **Adição do Git:** O `git` foi adicionado à imagem da API para permitir a instalação de dependências diretamente de repositórios Git, se necessário.

- **`docker/db/multiple-databases.sh`**:
  - **Formatação:** Adicionada uma nova linha ao final do arquivo para seguir as convenções de formatação de arquivos de texto.

* feat(project): adiciona Makefile e melhora a documentacao de setup (#7)

* Fix/db init script execution | 🧩 fix(infra): corrige execução do script de inicialização do banco de dados (#8)

* fix(infra): Resolve o erro 'não é possível executar: arquivo necessário não encontrado' na configuração do banco de dados Docker

* fix(infra): corrige execucao do script de inicializacao do banco de dados

* fix(infra): ajusta chamada da tarefa populate_sinapi_task no Makefile para incluir configuracoes de db e sinapi

* docs(project): adiciona documentacao para administracao e uso da API

* Fix/db init script execution | 🛠️ Correções na infraestrutura e melhorias no processo de carga de dados do SINAPI (#9)

* fix(infra): Resolve o erro 'não é possível executar: arquivo necessário não encontrado' na configuração do banco de dados Docker

* fix(infra): corrige execucao do script de inicializacao do banco de dados

* fix(infra): ajusta chamada da tarefa populate_sinapi_task no Makefile para incluir configuracoes de db e sinapi

* docs(project): adiciona documentacao para administracao e uso da API

* feat(etl): implementa bypass de arquivo local para ETL do SINAPI

Este commit introduz a capacidade de popular o banco de dados SINAPI usando arquivos .zip locais, ignorando a etapa de download.
- Configurado o mapeamento de volume `autosinapi_downloads` no `docker-compose.yml` para os serviços `api` e `celery_worker`.
- Atualizado o `README.md` com instruções detalhadas sobre como usar arquivos SINAPI locais, incluindo a estrutura de subdiretórios `AAAA_MM`.

fix(infra): resolve problemas de ambiente Docker e acesso à API

Este commit corrige vários problemas críticos de infraestrutura e acesso à API:
- Corrigido o comando `kong-migrations` no `docker-compose.yml` para importar corretamente a configuração declarativa do Kong a partir de `kong.yml`. Isso resolve os erros de "no Route matched".
- Revertido o `kong/kong.yml` para usar a rota genérica `/`.
- Depurado e confirmado a resolução do erro `TooManyRedirects` durante o download do ETL (pelo uso de arquivos locais).
- Depurado e confirmado a resolução do `psycopg2.OperationalError` na API (garantindo reinícios limpos do Docker).

Isso garante que a aplicação esteja totalmente funcional, com a população de dados e o acesso à API funcionando de ponta a ponta.

* feat(api, docs): Melhora busca e documentação da API (#10)

Este commit introduz duas melhorias principais:

1.  Refatoração da Busca de Composições (crud.py):
    *   A lógica de busca agora divide a string de consulta em palavras-chave independentes.
    *   Para cada palavra-chave é aplicado um ILIKE, garantindo resultados mais precisos e flexíveis.
    *   A query SQL é montada dinamicamente para otimizar a performance.

2.  Atualização da Documentação (user.md, README.md):
    *   Foram adicionados exemplos de curl para todos os endpoints na documentação do usuário.
    *   O cabeçalhe de autenticação foi corrigido para X-API-KEY nos exemplos.
    *   A documentação agora está mais clara e fácil de usar para novos desenvolvedores.
LAMP-LUCAS added a commit that referenced this pull request Sep 17, 2025
* Feature/estrutura inicial | Estrutura inicial completa da AutoSINAPI API com FastAPI, Docker e Kong (#3)

* chore: adiciona configuração inicial do projeto

* chore(infra): configura ambiente de desenvolvimento com Docker e Kong

* feat(api): implementa estrutura inicial da API com FastAPI

* feat(worker): adiciona configuração do Celery para tarefas em background

* docs: adiciona documentação inicial e padrões de nomenclatura

* chore: adiciona arquivo de exemplo para variáveis de ambiente

* fixup! chore(infra): configura ambiente de desenvolvimento com Docker e Kong

* Feature/correção docker e api | 🚀 Correções e Expansões na Arquitetura da API AutoSINAPI (#4)

* chore: adiciona configuração inicial do projeto

* chore(infra): configura ambiente de desenvolvimento com Docker e Kong

* feat(api): implementa estrutura inicial da API com FastAPI

* feat(worker): adiciona configuração do Celery para tarefas em background

* docs: adiciona documentação inicial e padrões de nomenclatura

* chore: adiciona arquivo de exemplo para variáveis de ambiente

* fixup! chore(infra): configura ambiente de desenvolvimento com Docker e Kong

* fix(docker): Adiciona permissão de execução ao script de inicialização do DB

* feat(project): Refatora arquitetura e adiciona módulos de BI

Esta refatoração completa moderniza a arquitetura do projeto, introduzindo modularidade e novas funcionalidades de Business Intelligence.

Principais alterações:

- Centralização de configurações com Pydantic-Settings em 'api/config.py'.

- Atualização de dependências e adição do módulo 'autosinapi' via Git.

- Melhoria na orquestração do Docker com 'depends_on' e 'healthcheck' robustos.

- Refatoração completa dos módulos da API ('crud', 'main', 'schemas') para usar a nova configuração e desacoplar a lógica.

- Adição de três novos endpoints de BI:

  - Análise de Estrutura (Bill of Materials)

  - Cálculo de Hora-Homem

  - Curva ABC de Insumos

* feat(bi): Adiciona endpoint de otimização de custo

Cria o endpoint /bi/composicao/{codigo}/otimizar que retorna os N insumos de maior impacto financeiro em uma composição, reutilizando a lógica do BOM.

* feat(bi): Adiciona endpoint de análise de custo histórico

Cria o endpoint /bi/item/{tipo_item}/{codigo}/historico para visualizar a variação de preço/custo de um item ao longo do tempo. Adiciona a dependência python-dateutil para manipulação de datas.

* docs(project): Atualiza documentação e adiciona guia de contribuição

- Renomeia nomenclaturas.md para CONTRIBUTING.md e expande o conteúdo.

- Atualiza o README.md com as novas funcionalidades de BI.

- Adiciona o WorkPlan.md com o plano para as próximas funcionalidades.

* fix(infra): Corrige inicialização e configuração do ambiente Docker' -m 'Este commit corrige uma série de problemas que impediam a inicialização completa e estável do ambiente Docker, especialmente relacionados à configuração do Kong e suas dependências. (#5)

- **`docker-compose.yml`**:
  - **Uso de Imagem Customizada:** Os serviços `kong` e `kong-migrations` passam a usar uma imagem construída localmente (`build: ./kong/`) em vez da imagem pública, permitindo a customização necessária.
  - **Correção de Healthcheck:** O `healthcheck` do serviço `sinapi_db` foi ajustado para verificar o usuário e banco de dados corretos (`kong`), garantindo que o status de saúde do banco de dados seja verificado corretamente.
  - **Correção de Script de Migração:** A sintaxe do laço `until` no comando do `kong-migrations` foi corrigida com a adição da cláusula `do`, resolvendo um erro de shell que bloqueava a inicialização.
  - **Melhora no Logging:** O comando de bootstrap das migrações foi alterado para `kong migrations bootstrap --vv`, ativando o modo verbose para facilitar a depuração de problemas de inicialização.

- **`kong/Dockerfile` (Novo):**
  - **Criação de Imagem Customizada:** Um novo `Dockerfile` para o Kong foi criado para adicionar dependências que não existem na imagem oficial.
  - **Instalação do `postgresql-client`:** Adiciona o cliente do PostgreSQL, essencial para que o script de migração possa usar o comando `pg_isready` para verificar o status do banco de dados.
  - **Gerenciamento de Permissões:** Utiliza `USER root` para instalar as dependências e retorna para `USER kong` ao final, seguindo as boas práticas de segurança para evitar a execução do container com privilégios de root.

- **`Dockerfile` (API):**
  - **Adição do Git:** O `git` foi adicionado à imagem da API para permitir a instalação de dependências diretamente de repositórios Git, se necessário.

- **`docker/db/multiple-databases.sh`**:
  - **Formatação:** Adicionada uma nova linha ao final do arquivo para seguir as convenções de formatação de arquivos de texto.

* feat(project): adiciona Makefile e melhora a documentacao de setup (#7)

* Fix/db init script execution | 🧩 fix(infra): corrige execução do script de inicialização do banco de dados (#8)

* fix(infra): Resolve o erro 'não é possível executar: arquivo necessário não encontrado' na configuração do banco de dados Docker

* fix(infra): corrige execucao do script de inicializacao do banco de dados

* fix(infra): ajusta chamada da tarefa populate_sinapi_task no Makefile para incluir configuracoes de db e sinapi

* docs(project): adiciona documentacao para administracao e uso da API

* Fix/db init script execution | 🛠️ Correções na infraestrutura e melhorias no processo de carga de dados do SINAPI (#9)

* fix(infra): Resolve o erro 'não é possível executar: arquivo necessário não encontrado' na configuração do banco de dados Docker

* fix(infra): corrige execucao do script de inicializacao do banco de dados

* fix(infra): ajusta chamada da tarefa populate_sinapi_task no Makefile para incluir configuracoes de db e sinapi

* docs(project): adiciona documentacao para administracao e uso da API

* feat(etl): implementa bypass de arquivo local para ETL do SINAPI

Este commit introduz a capacidade de popular o banco de dados SINAPI usando arquivos .zip locais, ignorando a etapa de download.
- Configurado o mapeamento de volume `autosinapi_downloads` no `docker-compose.yml` para os serviços `api` e `celery_worker`.
- Atualizado o `README.md` com instruções detalhadas sobre como usar arquivos SINAPI locais, incluindo a estrutura de subdiretórios `AAAA_MM`.

fix(infra): resolve problemas de ambiente Docker e acesso à API

Este commit corrige vários problemas críticos de infraestrutura e acesso à API:
- Corrigido o comando `kong-migrations` no `docker-compose.yml` para importar corretamente a configuração declarativa do Kong a partir de `kong.yml`. Isso resolve os erros de "no Route matched".
- Revertido o `kong/kong.yml` para usar a rota genérica `/`.
- Depurado e confirmado a resolução do erro `TooManyRedirects` durante o download do ETL (pelo uso de arquivos locais).
- Depurado e confirmado a resolução do `psycopg2.OperationalError` na API (garantindo reinícios limpos do Docker).

Isso garante que a aplicação esteja totalmente funcional, com a população de dados e o acesso à API funcionando de ponta a ponta.

* feat(api, docs): Melhora busca e documentação da API (#10)

Este commit introduz duas melhorias principais:

1.  Refatoração da Busca de Composições (crud.py):
    *   A lógica de busca agora divide a string de consulta em palavras-chave independentes.
    *   Para cada palavra-chave é aplicado um ILIKE, garantindo resultados mais precisos e flexíveis.
    *   A query SQL é montada dinamicamente para otimizar a performance.

2.  Atualização da Documentação (user.md, README.md):
    *   Foram adicionados exemplos de curl para todos os endpoints na documentação do usuário.
    *   O cabeçalhe de autenticação foi corrigido para X-API-KEY nos exemplos.
    *   A documentação agora está mais clara e fácil de usar para novos desenvolvedores.

* docs(release): Prepara documentação para o release v0.1.0-beta.0

* chore(license): Altera a licença para GPLv3 e atualiza dependência
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant