Resumo
Dockerização de aplicações FastAPI
Esta aula foca na containerização de uma aplicação FastAPI usando Docker, um passo essencial para levar projetos do ambiente local para produção. O Docker permite empacotar a aplicação com todas as suas dependências em um container isolado, garantindo que o código funcione de forma consistente em qualquer máquina. Durante a aula, é demonstrado como criar um Dockerfile adequado para uma aplicação FastAPI, configurando as camadas de imagem de forma otimizada para minimizar o tamanho final e melhorar os tempos de build. A containerização também facilita o deployment em plataformas como Kubernetes, Docker Swarm ou serviços em nuvem que oferecem suporte nativo a containers.
Substituindo SQLite por PostgreSQL
O SQLite é excelente para prototipagem e desenvolvimento local, mas em aplicações de produção é necessário um banco de dados mais robusto e escalável. O PostgreSQL oferece recursos avançados como transactions ACID, índices sofisticados, suporte a múltiplas conexões simultâneas e melhor performance em ambientes com alta concorrência. Nesta seção da aula, aprende-se como trocar o driver SQLite pela conexão PostgreSQL, ajustando as strings de conexão, configurando variáveis de ambiente e garantindo que as operações de criação de tabelas funcionem corretamente com o novo banco. Essa transição é prática e didática, mostrando passo a passo como refatorar código existente sem perder funcionalidade.
TestContainers para testes integrados
TestContainers é uma biblioteca que permite executar dependências reais (como bancos de dados, caches, filas) dentro de containers Docker durante a execução de testes. Em vez de usar mocks ou bancos em memória, TestContainers provisiona um banco PostgreSQL real em um container isolado, executa os testes contra esse banco real e depois destrói o container automaticamente. Isso garante que os testes sejam muito mais confiáveis e representativos do comportamento em produção, eliminando surpresas quando o código é implantado. A aula explora como integrar TestContainers em um projeto FastAPI, configurando fixtures que criam e limpam containers automaticamente para cada teste.
Escopos de fixtures no pytest
Fixtures são componentes reutilizáveis nos testes que preparam dados, estabelecem conexões com bancos e realizam setup/teardown. O pytest oferece diferentes escopos para fixtures: function (cria uma nova instância para cada função de teste), class (reutiliza para todos os testes em uma classe), module (reutiliza para todos os testes em um módulo) e session (reutiliza para toda a execução de testes). Entender e escolher o escopo correto é fundamental para otimizar o tempo de execução dos testes e evitar estado compartilhado indesejado. Na aula, discute-se como aplicar esses conceitos com TestContainers, garantindo que containers sejam criados apenas quando necessário e reutilizados eficientemente entre múltiplos testes.
Integração do fluxo completo
O grande valor desta aula está em unir todos esses conceitos em um fluxo coerente: uma aplicação FastAPI rodando em um container Docker, conectada a um PostgreSQL real, com testes robustos usando TestContainers e fixtures bem estruturadas. Essa arquitetura é padrão em projetos profissionais modernos e prepara o desenvolvedor para ambientes de produção real. A aula demonstra desde a construção da imagem Docker até a execução completa da suite de testes, passando pela configuração das dependências e variáveis de ambiente.
Boas práticas em ambiente de desenvolvimento
Além dos aspectos técnicos, a aula reforça boas práticas como usar variáveis de ambiente para configurar a conexão com o banco, manter o código testável desde o início do desenvolvimento e estruturar o projeto de forma que a transição de SQLite para PostgreSQL seja simples e natural. Essas práticas evitam refatorações dolorosas no futuro e facilitam a colaboração em equipes, onde diferentes desenvolvedores precisam ter ambientes isolados e reproduzíveis. Docker e TestContainers são ferramentas que implementam automaticamente esses princípios, reduzindo erros humanos e aumentando a confiança na qualidade do software.
O que você vai aprender
- Criar e configurar um Dockerfile para aplicações FastAPI otimizado para produção
- Integrar PostgreSQL em projetos FastAPI e migrar de SQLite
- Utilizar TestContainers para testes integrados com dependências reais
- Compreender e aplicar diferentes escopos de fixtures no pytest
- Estruturar variáveis de ambiente e configurações para múltiplos ambientes
Conceitos abordados
Tecnologias utilizadas
Capítulos 9 marcações
- Introdução e objetivos da aula
- Criando o Dockerfile para FastAPI
- Otimização da imagem Docker
- Migração de SQLite para PostgreSQL
- Configuração de conexão com PostgreSQL
- Introdução a TestContainers
- Implementando TestContainers nos testes
- Escopos de fixtures e sua aplicação
- Testando a aplicação completa
Próximo vídeo sugerido
Avaliações
Ainda não há avaliações. Seja o primeiro a avaliar esta aula.