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
Postar um comentário