Neste tutorial, vamos aprender como dockerizar nossa aplicação FastAPI e integrar um banco de dados PostgreSQL. Este curso é a 10ª aula de uma série destinada a ensinar o uso do FastAPI para construir APIs RESTful.
Para começar, é importante ter o Docker instalado em seu sistema. Caso não possua, você pode baixar e instalar a partir do site oficial do Docker (https://docs.docker.com/get-docker/).
Vamos começar criando um arquivo Dockerfile na raiz do nosso projeto. Este arquivo será responsável por definir as configurações necessárias para a nossa aplicação ser executada em um container Docker. Aqui está um exemplo simples de um Dockerfile para uma aplicação FastAPI:
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8
WORKDIR /app
COPY ./app /app
RUN pip install SQLAlchemy asyncpg
EXPOSE 80
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]
Neste Dockerfile, estamos utilizando a imagem tiangolo/uvicorn-gunicorn-fastapi
como nossa imagem base, que já possui as dependências necessárias para executar uma aplicação FastAPI. Em seguida, definimos o diretório de trabalho como /app
, copiamos os arquivos da nossa aplicação para dentro do container, instalamos as dependências do banco de dados PostgreSQL (SQLAlchemy e asyncpg), expomos a porta 80 e definimos o comando que será executado para iniciar a aplicação.
Agora precisamos criar um arquivo docker-compose.yml
para facilitar a execução do nosso container. Aqui está um exemplo de um arquivo docker-compose.yml
para nossa aplicação:
version: '3'
services:
app:
build: .
ports:
- "8000:80"
environment:
- POSTGRES_URL=postgresql://postgres:password@db/postgres
depends_on:
- db
db:
image: postgres
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: postgres
Neste arquivo docker-compose.yml
, estamos definindo dois serviços: app
e db
. O serviço app
será construído a partir do Dockerfile presente na raiz do projeto, mapeamos a porta 80 do container para a porta 8000 do nosso host, definimos a URL de conexão com o banco de dados PostgreSQL no ambiente da aplicação e configuramos a dependência do serviço db
.
O serviço db
utiliza a imagem oficial do PostgreSQL, definimos as variáveis de ambiente necessárias para configurar o banco de dados.
Agora, podemos construir e iniciar nossos containers executando o comando docker-compose up --build
na raiz do nosso projeto. Isso irá construir a imagem da nossa aplicação e iniciar os containers do app
e do db
.
Após a conclusão, você poderá acessar a sua aplicação FastAPI em http://localhost:8000
e verificar se a integração com o banco de dados PostgreSQL está funcionando corretamente.
Este tutorial ensinou como dockerizar uma aplicação FastAPI e integrar um banco de dados PostgreSQL. Espero que você tenha encontrado útil e aprendido algo novo. Obrigado por acompanhar esta série de tutoriais sobre FastAPI e Docker. Até a próxima aula!
Nem curso pago ensina com essa didática, dunossauroLibre
Sempre superando as expectativas! Aulas sensacionais e conteúdo esmiuçado! Valeu! Ajudando muito!