Django Guía

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