Ir para o conteúdo

Ambiente de Desenvolvimento Backend com Docker

O ambiente de desenvolvimento do MedPark é totalmente containerizado usando Docker e Docker Compose. Isso garante um ambiente consistente, replicável e isolado, independentemente do sistema operacional do desenvolvedor.

Dockerfile

Este arquivo é a base para construir a imagem da aplicação FastAPI. Seus principais passos são: 1. FROM python:3.11-slim: Usa uma imagem oficial e leve do Python como base. 2. RUN apt-get update ...: Aplica atualizações de segurança ao sistema operacional base. 3. WORKDIR /code: Define o diretório de trabalho padrão dentro do contêiner. 4. ENV PYTHONPATH=/code: Configura o caminho do Python para que as importações funcionem corretamente. 5. COPY requirements.txt ... e RUN pip install ...: Copia e instala as dependências do Python. 6. COPY ./app /code/app: Copia o código-fonte da aplicação para dentro do contêiner. 7. CMD ["uvicorn", ...]: Define o comando padrão para iniciar o servidor da API quando o contêiner for executado.

docker-compose.yml

Este arquivo orquestra os serviços, define e conecta dois contêineres:

1. Serviço db (Banco de Dados)

  • image: postgres:15-alpine: Usa uma imagem oficial e leve do PostgreSQL.
  • volumes: Mapeia uma pasta local (./postgres_data) para a pasta de dados do contêiner, garantindo que os dados do banco persistam mesmo que o contêiner seja recriado.
  • environment: Configura o usuário, a senha e o nome do banco de dados que será criado automaticamente.
  • ports: - "5432:5432": Expõe a porta do PostgreSQL para a máquina local, permitindo a conexão com clientes de BD como o DBeaver.

2. Serviço backend (API)

  • build: .: Instrui o Compose a construir a imagem usando o Dockerfile presente na pasta raiz.
  • ports: - "8000:8000": Expõe a porta da API para a máquina local.
  • volumes: - ./app:/code/app: Cria uma sincronização em tempo real ("live sync") entre a pasta app local e a pasta correspondente no contêiner. Isso permite que alterações no código sejam refletidas instantaneamente sem a necessidade de reconstruir a imagem.
  • environment: Passa a URL de conexão do banco de dados para a aplicação. Note que o host é db, o nome do serviço do banco de dados, pois os contêineres se enxergam por seus nomes de serviço na rede interna do Docker.
  • depends_on: - db: Garante que o contêiner do banco de dados seja iniciado antes do contêiner do backend.

Histórico de Versões

Versão Data Autor(es) Descrição das Alterações
1.0 28/09/2025 Brunna Louise Criação do documento.

Tabela 1: Histórico de versões do documento de Docker.