Este documento explica detalladamente los ajustes implementados en el Nivel 1, los cambios aplicados al proyecto y cómo arrancar el sistema correctamente tanto en modo desarrollo como en modo producción, junto con sus diferencias clave.
El Nivel 1 mejora la estructura general del proyecto agregando:
- ✔ Archivo
.envpara manejar variables de entorno. - ✔ docker-compose.yml actualizado para usar variables del
.env. - ✔ docker-compose.override.yml para ejecutar el proyecto en modo desarrollo.
- ✔ Healthcheck para Django y PostgreSQL.
- ✔ Gunicorn como servidor de producción.
- ✔ Separación real entre Dev Mode y Deploy Mode.
Estas mejoras te permiten trabajar de manera profesional y aprender conceptos reales de Docker.
Variables de entorno centralizadas para evitar hardcodeo.
Archivo principal usado en producción.
Archivo usado automáticamente en desarrollo.
Actualizado para leer valores desde variables de entorno.
Actualizado para incluir curl y gunicorn.
- Usa
docker-compose.yml+docker-compose.override.yml - Django corre con runserver
- Código del host → contenedor (hot reload)
- Depuración ON
- Ideal para programar
docker-compose up --builddocker-compose downEn los logs verás:
Watching for file changes...
Starting development server at http://0.0.0.0:8000- Usa solo docker-compose.yml
- No usa override
- Django corre con Gunicorn
- No existe hot reload
- DEBUG desactivado
- Volúmenes más controlados
docker-compose -f docker-compose.yml up --build -ddocker-compose logs -fdocker-compose -f docker-compose.yml downEn los logs verás:
[INFO] Starting gunicorn...
[INFO] Booting worker with pid...| Característica | Dev Mode | Deploy Mode |
|---|---|---|
| Servidor | runserver | Gunicorn |
| Hot Reload | ✔ Sí | ❌ No |
| Volúmenes | ✔ Montados | ❌ No montados |
| DEBUG | ✔ Activado | ❌ Desactivado |
| Archivos | usados | docker-compose.yml + override.yml docker-compose.yml |
| Ideal | para Programar | Producción / pruebas reales |
docker-compose.yml
+ docker-compose.override.yml
--------------------------------
= Configuración combinada para desarrollodocker-compose.yml
--------------------------------
= Configuración única optimizada para produccióndocker-compose up
docker-compose up --build
docker-compose down
docker-compose exec web bashdocker-compose -f docker-compose.yml up -d
docker-compose -f docker-compose.yml build
docker-compose -f docker-compose.yml restart
docker-compose -f docker-compose.yml down
docker-compose logs -f✔ Diferencia entre override y compose normal
✔ Separación entre entornos desarrollo y producción
✔ Cómo usar .env en Docker
✔ Cómo levantar Gunicorn con Django
✔ Cómo aplicar healthchecks en contenedores
✔ Cómo leer variables de entorno desde Django
✔ Cómo Docker combina configuraciones
Este proyecto está bajo licencia MIT.