Template: GitHub Actions CI/CD para Django
Pipeline de CI/CD completo con GitHub Actions. Tests, linting, coverage, build de Docker y deploy automático a Railway/Render.
Docker Compose completo para desarrollo local de Django. Incluye PostgreSQL, Redis, Celery worker, y hot-reload. Copy-paste y funciona.
Setup completo de desarrollo local. Un solo docker-compose up y tienes Django, PostgreSQL y Redis corriendo con hot reload.
services:
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/app
- pip-cache:/root/.cache/pip
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgresql://django:django@db:5432/django_db
- REDIS_URL=redis://redis:6379/0
- DEBUG=True
- SECRET_KEY=dev-secret-key-cambiar-en-produccion
depends_on:
db:
condition: service_healthy
redis:
condition: service_started
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: django
POSTGRES_PASSWORD: django
POSTGRES_DB: django_db
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U django -d django_db"]
interval: 5s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
- redisdata:/data
celery:
build: .
command: celery -A config worker -l info
volumes:
- .:/app
environment:
- DATABASE_URL=postgresql://django:django@db:5432/django_db
- REDIS_URL=redis://redis:6379/0
depends_on:
- web
- redis
volumes:
pgdata:
redisdata:
pip-cache:
FROM python:3.12-slim
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends libpq-dev gcc && apt-get clean && rm -rf /var/lib/apt/lists/*
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
import dj_database_url
import os
DATABASES = {
'default': dj_database_url.config(
default=os.environ.get('DATABASE_URL', 'sqlite:///db.sqlite3'),
conn_max_age=600,
)
}
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': os.environ.get('REDIS_URL', 'redis://localhost:6379/0'),
'OPTIONS': {'CLIENT_CLASS': 'django_redis.client.DefaultClient'},
}
}
CELERY_BROKER_URL = os.environ.get('REDIS_URL', 'redis://localhost:6379/0')
CELERY_RESULT_BACKEND = CELERY_BROKER_URL
up:
docker compose up -d
down:
docker compose down
logs:
docker compose logs -f web
shell:
docker compose exec web python manage.py shell
migrate:
docker compose exec web python manage.py migrate
makemigrations:
docker compose exec web python manage.py makemigrations
test:
docker compose exec web python manage.py test --verbosity=2
reset-db:
docker compose down -v
docker compose up -d
sleep 3
docker compose exec web python manage.py migrate
docker compose exec web python manage.py createsuperuser
# Levantar todo
docker compose up -d
# Ver logs en tiempo real
docker compose logs -f web
# Entrar al contenedor
docker compose exec web bash
# Correr migraciones
docker compose exec web python manage.py migrate
# Crear superusuario
docker compose exec web python manage.py createsuperuser
# Reset completo (borra datos!)
docker compose down -v && docker compose up -d
Este recurso incluye un enlace externo. Regístrate para acceder.
Regístrate gratis para descargar archivos, guardar recursos en favoritos, ganar XP y acceder a cursos y el foro de la comunidad.
¿Ya tienes cuenta? Inicia sesión
Autor
Erik Taveras
Creado por
Erik Taveras
Pipeline de CI/CD completo con GitHub Actions. Tests, linting, coverage, build de Docker y deploy automático a Railway/Render.
Estructura completa para un microservicio con FastAPI, SQLAlchemy, Alembic, Docker y tests con pytest. Listo para producción.
API REST production-ready con DRF. Incluye serializers, viewsets, paginación, filtros, throttling, documentación con drf-spectacular y tests.