Rodando FastAPI Com Docker: Guia Completo E Prático

Alex Johnson
-
Rodando FastAPI Com Docker: Guia Completo E Prático

Fala, galera! 🚀 Hoje, vamos mergulhar no mundo do FastAPI e Docker, desvendando como você pode rodar suas aplicações FastAPI localmente de forma eficiente e descomplicada. Se você é novo no assunto ou já tem alguma experiência, este guia é para você. Vamos explorar duas formas principais de colocar seu projeto para rodar, com dicas e truques para otimizar o processo. Prepare-se para simplificar seu fluxo de trabalho e aproveitar ao máximo essas ferramentas incríveis! 💻

Forma 1: Usando Docker Compose - A Maneira Recomendada 🥇

Se você está começando ou já tem um projeto um pouco mais complexo, com certeza vai adorar o Docker Compose. Ele é como um maestro, orquestrando seus contêineres e simplificando a configuração e execução da sua aplicação. Especialmente se você tem mais de um serviço (como um banco de dados), o Docker Compose é a escolha certa. Com ele, você define tudo em um arquivo e executa tudo com um único comando! Maneiro, né?

Passo 1: Crie o Arquivo docker-compose.yml ✍️

Na raiz do seu projeto, crie um arquivo chamado docker-compose.yml. Este arquivo é o coração da configuração do Docker Compose. Ele define todos os serviços da sua aplicação, suas configurações e como eles interagem. Para um projeto FastAPI simples, o arquivo pode ser algo assim:

version: '3.8'

services:
 web:
 build: .
 ports:
 - "8000:8000"
 restart: unless-stopped

Vamos entender cada parte:

  • version: '3.8': Define a versão da sintaxe do Docker Compose que você está usando. É importante para garantir a compatibilidade.
  • services:: Aqui é onde você define seus serviços. No nosso caso, temos um serviço chamado web, que representa nossa aplicação FastAPI.
  • web:: Nome do serviço. Você pode escolher qualquer nome que faça sentido para você.
  • build: .: Diz ao Docker Compose para construir a imagem do Docker usando o Dockerfile que está no diretório atual (o . significa o diretório atual).
  • ports: - "8000:8000": Esta é uma das partes mais importantes. Ela mapeia a porta 8000 do seu computador para a porta 8000 dentro do contêiner Docker. Isso significa que você poderá acessar sua aplicação FastAPI no seu navegador em http://localhost:8000. Show de bola!
  • restart: unless-stopped: Esta linha garante que o contêiner reinicie automaticamente se ele parar por algum motivo (por exemplo, se houver um erro na sua aplicação).

Passo 2: Execute o Comando Mágico ✨

Agora que você tem o arquivo docker-compose.yml configurado, é hora de colocar a mão na massa! Abra o terminal na raiz do seu projeto e execute o seguinte comando:

docker-compose up --build
  • docker-compose up: Este comando inicia seus serviços definidos no arquivo docker-compose.yml.
  • --build: Esta flag é super útil! Ela força a reconstrução da imagem do Docker. Use-a na primeira vez que você rodar ou sempre que fizer alterações no seu código. Assim, o Docker garante que tudo esteja atualizado.

Depois de executar o comando, o Docker vai construir a imagem (se ainda não tiver sido construída) e iniciar o contêiner. Você verá algumas mensagens no terminal mostrando o progresso. Quando tudo estiver pronto, sua aplicação FastAPI estará acessível em http://localhost:8000!

Para parar a aplicação, basta pressionar Ctrl+C no terminal. Se você quiser rodar em segundo plano, use docker-compose up -d. O -d significa "detached", ou seja, o contêiner rodará em segundo plano.

Forma 2: Executando Diretamente do Docker - Para Aqueles que Gostam de Controle 💪

Se você gosta de ter mais controle sobre o processo ou está trabalhando em um projeto menor, rodar diretamente com o Docker pode ser uma boa opção. Essa forma envolve construir a imagem Docker e, em seguida, executá-la em um contêiner separado. É um pouco mais manual, mas te dá mais flexibilidade.

Passo 1: Construa a Imagem Docker 🐳

Com o seu Dockerfile na raiz do projeto (se você não tiver um, precisará criar um – mas não se preocupe, é bem simples!), use o comando docker build para criar a imagem. O Dockerfile é como uma receita que o Docker usa para construir a imagem do seu aplicativo. Ele especifica as dependências, os comandos para instalar o software e como o aplicativo deve ser executado.

docker build -t meu-app-fastapi .
  • docker build: O comando para construir a imagem.
  • -t meu-app-fastapi: Esta flag atribui um nome (tag) à sua imagem. No exemplo, chamamos a imagem de meu-app-fastapi. Use um nome que faça sentido para você! Isso facilita a identificação da imagem.
  • .: Indica que o Dockerfile está no diretório atual. O Docker vai procurar o Dockerfile nesse diretório.

Aguarde o processo de construção. O Docker vai executar os comandos definidos no seu Dockerfile e criar a imagem. Isso pode levar alguns minutos, dependendo do tamanho da sua aplicação e das dependências.

Passo 2: Execute o Contêiner 🏃

Após a imagem ser construída, use o comando docker run para iniciar o contêiner. Este comando cria e executa um contêiner a partir da imagem que você construiu.

docker run -p 8000:8000 meu-app-fastapi
  • docker run: O comando para executar o contêiner.
  • -p 8000:8000: Faz o mesmo mapeamento de portas da primeira forma. Mapeia a porta 8000 do seu computador para a porta 8000 dentro do contêiner.
  • meu-app-fastapi: É o nome da imagem que você acabou de construir. O Docker usa essa imagem para criar o contêiner.

Pronto! Sua aplicação estará no ar e acessível em http://localhost:8000. Parabéns! 🎉

Qual Forma Escolher? 🤔

Ambas as formas funcionam perfeitamente. A escolha entre elas depende da complexidade do seu projeto e da sua preferência pessoal. Para projetos mais robustos, o Docker Compose é a escolha mais inteligente, pois facilita a gerenciamento de múltiplos serviços e configurações mais complexas. Se você está começando ou tem um projeto simples, rodar diretamente com o Docker pode ser mais rápido e fácil. Mas, no fim das contas, a melhor forma é aquela que funciona melhor para você e te ajuda a ser mais produtivo!

Espero que este guia tenha sido útil! Se tiver alguma dúvida, deixe um comentário abaixo. E não se esqueça de compartilhar este artigo com seus amigos desenvolvedores! 😉

Recursos Adicionais:

You may also like