13. DevOps y Calidad de Código
Un proyecto profesional no termina al escribir el código. Necesitamos asegurarnos de que funcione en cualquier máquina y mantener un estilo consistente.
1. Docker y Docker Compose
Hemos "dockerizado" la aplicación para garantizar que el entorno de desarrollo sea idéntico para todos los desarrolladores.
Dockerfile
Define la imagen del sistema operativo, instala Python, las dependencias y prepara el servidor Gunicorn.
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt /app/
RUN pip install -r requirements.txt
COPY src/ /app/src/
CMD ["gunicorn", "--chdir", "src", "curso_django.wsgi:application", "--bind", "0.0.0.0:8000"]
Docker Compose
Orquesta los servicios. En este caso, levanta Django (web) y una base de datos PostgreSQL real (db), conectándolos automáticamente.
# docker-compose.yml
services:
web:
build: .
ports:
- "8000:8000"
depends_on:
- db
db:
image: postgres:15
Para correr el proyecto ahora solo necesitas:
docker-compose up --build
2. Calidad de Código (Linters)
Para mantener el código limpio y legible, hemos integrado herramientas estándares de la industria:
- Black: Formateador de código automático. Se acabó discutir por dónde poner los paréntesis.
- Isort: Ordena las importaciones alfabéticamente y por secciones.
- Flake8: Busca errores de sintaxis y estilo (PEP 8).
Pre-commit Hooks
Hemos configurado pre-commit. Esta herramienta ejecuta las comprobaciones automáticamente antes de que puedas hacer un commit. Si tu código está mal formateado, el commit fallará y te pedirá que lo arregles.
# .pre-commit-config.yaml
repos:
- repo: https://github.com/psf/black
hooks:
- id: black
Para instalarlo en tu entorno local:
pip install pre-commit
pre-commit install