|
| 1 | +# 🟦 Nivel 1: Mejora del Proyecto con Docker — Dev Mode & Deploy Mode |
| 2 | + |
| 3 | +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. |
| 4 | + |
| 5 | +--- |
| 6 | + |
| 7 | +# 📘 1. ¿Qué incluye el Nivel 1? |
| 8 | + |
| 9 | +El Nivel 1 mejora la estructura general del proyecto agregando: |
| 10 | + |
| 11 | +1. ✔ **Archivo `.env`** para manejar variables de entorno. |
| 12 | +2. ✔ **docker-compose.yml actualizado** para usar variables del `.env`. |
| 13 | +3. ✔ **docker-compose.override.yml** para ejecutar el proyecto en modo desarrollo. |
| 14 | +4. ✔ **Healthcheck para Django y PostgreSQL**. |
| 15 | +5. ✔ **Gunicorn como servidor de producción**. |
| 16 | +6. ✔ **Separación real entre Dev Mode y Deploy Mode**. |
| 17 | + |
| 18 | +Estas mejoras te permiten trabajar de manera profesional y aprender conceptos reales de Docker. |
| 19 | + |
| 20 | +--- |
| 21 | + |
| 22 | +# 📁 2. Archivos creados o modificados en este nivel |
| 23 | + |
| 24 | +## ✔ `.env` |
| 25 | +Variables de entorno centralizadas para evitar hardcodeo. |
| 26 | + |
| 27 | +## ✔ `docker-compose.yml` |
| 28 | +Archivo principal usado en producción. |
| 29 | + |
| 30 | +## ✔ `docker-compose.override.yml` |
| 31 | +Archivo usado automáticamente en desarrollo. |
| 32 | + |
| 33 | +## ✔ `settings.py` |
| 34 | +Actualizado para leer valores desde variables de entorno. |
| 35 | + |
| 36 | +## ✔ `Dockerfile` |
| 37 | +Actualizado para incluir `curl` y `gunicorn`. |
| 38 | + |
| 39 | +--- |
| 40 | + |
| 41 | +# 🚀 3. Cómo arrancar el proyecto en cada modo |
| 42 | + |
| 43 | +--- |
| 44 | + |
| 45 | +# 🟢 DEV MODE (modo desarrollo) |
| 46 | + |
| 47 | +### ✔ ¿Qué características tiene Dev Mode? |
| 48 | +- Usa `docker-compose.yml` + `docker-compose.override.yml` |
| 49 | +- Django corre con **runserver** |
| 50 | +- Código del host → contenedor (hot reload) |
| 51 | +- Depuración ON |
| 52 | +- Ideal para programar |
| 53 | + |
| 54 | +### 🎯 Comando para iniciar en dev: |
| 55 | +```bash |
| 56 | +docker-compose up --build |
| 57 | +``` |
| 58 | + |
| 59 | +### 🎯 Comando para detener en dev: |
| 60 | +```bash |
| 61 | +docker-compose down |
| 62 | +``` |
| 63 | + |
| 64 | +### 🔍 Confirmación visual: |
| 65 | + |
| 66 | +En los logs verás: |
| 67 | +```rust |
| 68 | +Watching for file changes... |
| 69 | +Starting development server at http://0.0.0.0:8000 |
| 70 | +``` |
| 71 | + |
| 72 | +--- |
| 73 | + |
| 74 | +# 🔵 DEPLOY MODE (modo producción) |
| 75 | + |
| 76 | +### ✔ ¿Qué características tiene Deploy Mode? |
| 77 | + |
| 78 | +- Usa solo docker-compose.yml |
| 79 | +- No usa override |
| 80 | +- Django corre con Gunicorn |
| 81 | +- No existe hot reload |
| 82 | +- DEBUG desactivado |
| 83 | +- Volúmenes más controlados |
| 84 | + |
| 85 | +### 🎯 Comando para iniciar en producción: |
| 86 | +```bash |
| 87 | +docker-compose -f docker-compose.yml up --build -d |
| 88 | +``` |
| 89 | + |
| 90 | +### 🎯 Para ver logs: |
| 91 | +```bash |
| 92 | +docker-compose logs -f |
| 93 | +``` |
| 94 | + |
| 95 | +### 🎯 Para detener: |
| 96 | +```bash |
| 97 | +docker-compose -f docker-compose.yml down |
| 98 | +``` |
| 99 | + |
| 100 | +### 🔍 Confirmación visual: |
| 101 | + |
| 102 | +En los logs verás: |
| 103 | +```rust |
| 104 | +[INFO] Starting gunicorn... |
| 105 | +[INFO] Booting worker with pid... |
| 106 | +``` |
| 107 | + |
| 108 | +--- |
| 109 | + |
| 110 | +# ⚖️ 4. Diferencias clave entre Dev Mode y Deploy Mode |
| 111 | + |
| 112 | +| Característica | Dev Mode | Deploy Mode | |
| 113 | +| Servidor | runserver | Gunicorn | |
| 114 | +| Hot Reload | ✔ Sí | ❌ No | |
| 115 | +| Volúmenes | ✔ Montados | ❌ No montados | |
| 116 | +| DEBUG | ✔ Activado | ❌ Desactivado | |
| 117 | +| Archivos | usados | docker-compose.yml + override.yml docker-compose.yml | |
| 118 | +| Ideal | para Programar | Producción / pruebas reales | |
| 119 | + |
| 120 | +--- |
| 121 | + |
| 122 | +# 📊 5. Flujo de archivos utilizados por Docker |
| 123 | + |
| 124 | +## 🟢 Dev Mode: |
| 125 | + |
| 126 | +```bash |
| 127 | +docker-compose.yml |
| 128 | ++ docker-compose.override.yml |
| 129 | +-------------------------------- |
| 130 | += Configuración combinada para desarrollo |
| 131 | +``` |
| 132 | + |
| 133 | +## 🔵 Deploy Mode: |
| 134 | + |
| 135 | +```bash |
| 136 | +docker-compose.yml |
| 137 | +-------------------------------- |
| 138 | += Configuración única optimizada para producción |
| 139 | +``` |
| 140 | + |
| 141 | +--- |
| 142 | + |
| 143 | +# 🔧 6. Comandos útiles según el modo |
| 144 | + |
| 145 | +## 🟢 Desarrollo |
| 146 | + |
| 147 | +```bash |
| 148 | +docker-compose up |
| 149 | +docker-compose up --build |
| 150 | +docker-compose down |
| 151 | +docker-compose exec web bash |
| 152 | +``` |
| 153 | + |
| 154 | + |
| 155 | +## 🔵 Producción |
| 156 | + |
| 157 | +```bash |
| 158 | +docker-compose -f docker-compose.yml up -d |
| 159 | +docker-compose -f docker-compose.yml build |
| 160 | +docker-compose -f docker-compose.yml restart |
| 161 | +docker-compose -f docker-compose.yml down |
| 162 | +docker-compose logs -f |
| 163 | +``` |
| 164 | + |
| 165 | +--- |
| 166 | + |
| 167 | +# 🎓 7. Qué has aprendido en este nivel |
| 168 | + |
| 169 | +✔ Diferencia entre override y compose normal |
| 170 | +✔ Separación entre entornos desarrollo y producción |
| 171 | +✔ Cómo usar .env en Docker |
| 172 | +✔ Cómo levantar Gunicorn con Django |
| 173 | +✔ Cómo aplicar healthchecks en contenedores |
| 174 | +✔ Cómo leer variables de entorno desde Django |
| 175 | +✔ Cómo Docker combina configuraciones |
0 commit comments