11 — Referencia Rápida
← Anterior: 10 — Pipeline CI/CD con GitHub Actions
Despliegue manual (mismos pasos que GitHub Actions)
IMAGE="southamerica-east1-docker.pkg.dev/mycoolproject-prod/mycoolproject-repo/app"
docker build -t $IMAGE:latest . # Construir imagen desde el Dockerfile en la raíz del repositorio
docker push $IMAGE:latest # Subir imagen a Artifact Registry
gcloud run jobs update migrate --image=$IMAGE:latest --region=southamerica-east1 # Apuntar el trabajo de migración a la nueva imagen
gcloud run jobs execute migrate --region=southamerica-east1 --wait # Ejecutar migraciones, esperar a que terminen
gcloud run deploy mycoolproject --image=$IMAGE:latest --region=southamerica-east1 # Desplegar nueva imagen a Cloud Run
Ejecutar migraciones sin reconstruir
Ver logs en vivo
# Transmitir logs en vivo a la terminal — útil justo después de un despliegue (Ctrl+C para detener)
gcloud run services logs tail mycoolproject --region=southamerica-east1
# Lee las últimas 50 entradas de log de nivel error desde Cloud Logging
gcloud logging read \
'resource.type="cloud_run_revision" AND severity>=ERROR' \
--project=mycoolproject-prod --limit=50
Secretos
# Añadir un nuevo secreto
echo -n "valor" | gcloud secrets create NOMBRE_SECRETO --data-file=-
# Actualizar un secreto existente
echo -n "nuevo-valor" | gcloud secrets versions add NOMBRE_SECRETO --data-file=-
# Leer un secreto (cuidado — se imprime en la terminal)
gcloud secrets versions access latest --secret=NOMBRE_SECRETO
# Listar todos los secretos
gcloud secrets list
Cloud Run
# Muestra detalles del servicio, URL, revisión actual y división de tráfico
gcloud run services describe mycoolproject --region=southamerica-east1
# Lista revisiones (la más reciente primero) — usar para encontrar el nombre de la revisión para rollback
gcloud run revisions list --service=mycoolproject --region=southamerica-east1
# Cambia instantáneamente el 100% del tráfico a una revisión anterior (rollback instantáneo)
gcloud run services update-traffic mycoolproject \
--region=southamerica-east1 \
--to-revisions=mycoolproject-<nombre-revision>=100
# Actualiza una variable de entorno en el servicio en vivo sin reconstruir la imagen
gcloud run services update mycoolproject \
--region=southamerica-east1 \
--update-env-vars=ALLOWED_HOSTS="mycoolproject.cl,www.mycoolproject.cl"
Cloud SQL
# Imprime el estado de la instancia (RUNNABLE = saludable, SUSPENDED = pausada para ahorrar costos)
gcloud sql instances describe mycoolproject-db --format="value(state)"
# Abre una sesión interactiva de psql a la base de datos de producción mediante el proxy de Cloud SQL
# Usar con cuidado — es acceso directo a los datos de producción
gcloud sql connect mycoolproject-db --user=djangouser --database=mycoolproject
Comandos de gestión de Django mediante Cloud Run Job
Para cualquier comando manage.py puntual en producción, crea o reutiliza un Cloud Run Job:
# Ejemplo: ejecutar un comando de gestión personalizado
gcloud run jobs create mi-comando \
--image=southamerica-east1-docker.pkg.dev/mycoolproject-prod/mycoolproject-repo/app:latest \
--region=southamerica-east1 \
--service-account=mycoolproject-run-sa@mycoolproject-prod.iam.gserviceaccount.com \
--add-cloudsql-instances=mycoolproject-prod:southamerica-east1:mycoolproject-db \
--set-secrets=DATABASE_URL=DATABASE_URL:latest,SECRET_KEY=DJANGO_SECRET_KEY:latest \
--command="uv,run,manage.py,tu_comando"
gcloud run jobs execute mi-comando --region=southamerica-east1 --wait
Archivos estáticos
# Volver a subir archivos estáticos a GCS después de cambios en CSS/JS/iconos
cd web
DJANGO_SETTINGS_MODULE=core.settings.prod uv run manage.py collectstatic --noinput
Health check
📖 Navegación
- 01 — Configuración del Proyecto GCP
- 02 — Artifact Registry
- 03 — Cloud SQL (Base de datos PostgreSQL)
- 04 — Secret Manager
- 05 — Cloud Storage (Media & static files)
- 06 — Dockerfile
- 07 — Primer Despliegue
- 08 — Dominio Personalizado y SSL
- 09 — Workload Identity Federation (Auth de GitHub sin llaves)
- 10 — Pipeline CI/CD con GitHub Actions
- 11 — Referencia Rápida (Capítulo actual)
- 12 — Bonus: Email Personalizado (@dominio.cl)