Pular para o conteúdo principal

Como Construir Aplicações FastAPI com Poetry em um Ambiente Docker

A criação de aplicações que utilizam Poetry para gestão de dependências em um ambiente containerizado oferece um design mais limpo e eficiente para gerenciamento de pacotes, além de garantir maior consistência no ambiente de desenvolvimento e produção. Este guia aborda como construir uma imagem Docker para uma aplicação FastAPI que utiliza o Poetry.

Estrutura do Projeto

.
├── app
│   ├── main.py
├── pyproject.toml
├── poetry.lock
├── Dockerfile

1. Criar a Aplicação FastAPI

No arquivo app/main.py, crie uma aplicação básica:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello, FastAPI with Poetry!"}

2. Configurar o Poetry

Inicialize o Poetry no diretório do projeto:

poetry init

Adicione o FastAPI e o Uvicorn como dependências:

poetry add fastapi uvicorn

3. Escrever o Dockerfile

Crie um arquivo Dockerfile com o seguinte conteúdo:

FROM python:3.9-slim

# Instalar o Poetry
RUN pip install --no-cache-dir poetry

# Configurar o diretório de trabalho
WORKDIR /app

# Copiar os arquivos do Poetry
COPY pyproject.toml poetry.lock /app/

# Instalar as dependências do Poetry
RUN poetry config virtualenvs.create false \
    && poetry install --no-root --no-dev

# Copiar o código da aplicação
COPY app /app/app

# Expor a porta do servidor
EXPOSE 8000

# Comando para rodar a aplicação
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]

4. Construir e Executar a Imagem Docker

Para construir a imagem:

docker build -t fastapi-poetry-app .

Para executar o contêiner:

docker run -d -p 8000:8000 fastapi-poetry-app

5. Testar a Aplicação

Acesse a aplicação no navegador ou via cURL:

http://localhost:8000

Você verá a resposta:

{"message": "Hello, FastAPI with Poetry!"}

Com isso, sua aplicação FastAPI utilizando Poetry está configurada e empacotada dentro de um contêiner Docker!

Para mais informações, confira as referências abaixo:

Comentários