Appearance
Operación en el host
Comandos para inspeccionar y operar los servicios directamente en el host de un entorno. Todos se ejecutan desde el directorio del stack:
sh
cd ${DEPLOY_BASE_PATH}/idp # auth-backend y frontends del IDP
cd ${DEPLOY_BASE_PATH}/seleccionador # backend y frontends del SPS
cd ${DEPLOY_BASE_PATH}/docs # manualesINFO
La forma normal de desplegar es mediante los pipelines. Las operaciones manuales de esta página son para diagnóstico y contingencias; el siguiente despliegue vuelve a aplicar la configuración de infra-deploy.
Estado de los servicios
sh
docker compose psColumna STATUS:
| Estado | Significado |
|---|---|
Up (healthy) | Contenedor en ejecución y /health/ responde |
Up (health: starting) | Dentro del start_period (20 s backends, 5 s frontends) |
Up (unhealthy) | En ejecución, pero el health check falló 3 veces seguidas |
Restarting | El proceso termina y Docker lo reinicia (restart: unless-stopped) |
Detalle del último health check:
sh
docker inspect --format '{{json .State.Health}}' auth-backendUso de recursos:
sh
docker stats --no-streamLogs
sh
# Últimas 200 líneas
docker compose logs --tail 200 backend-seleccion-postulantes
# En vivo
docker compose logs -f backend-seleccion-postulantes
# Desde hace 30 minutos
docker compose logs --since 30m auth-backendEn los backends, la salida incluye los logs de acceso y error de gunicorn y la salida del entrypoint.sh (migraciones, collectstatic y comandos de arranque). Los logs rotan a 10 MB con 5 archivos por contenedor.
Reiniciar o recrear un servicio
sh
# Reiniciar el proceso (misma imagen y configuración)
docker compose restart auth-backend
# Recrear el contenedor (relee back.env y .env)
docker compose up -d --force-recreate --no-deps auth-backendTIP
restart no vuelve a leer env_file. Si cambió back.env, use up -d --force-recreate.
Actualizar a la última imagen
Equivale a lo que hace el pipeline para un servicio:
sh
docker compose pull backend-seleccion-postulantes
docker compose up -d --no-deps backend-seleccion-postulantesRequiere sesión iniciada en el registry (docker login git.eje.gob.bo:5050) con el deploy token del grupo.
Rollback a una versión anterior
Cada build publica un tag inmutable <rama>-<sha corto>. Para volver a una versión anterior de un servicio:
Identificar el tag en GitLab: Deploy → Container Registry del repositorio, o el SHA del commit en el historial de la rama.
Desplegar ese tag solo para el servicio afectado, sobrescribiendo
IMAGE_TAGen la línea de comandos (tiene prioridad sobre.env):shIMAGE_TAG=main-a1b2c3d4 docker compose pull auth-backend IMAGE_TAG=main-a1b2c3d4 docker compose up -d --no-deps auth-backendVerificar con
docker compose psy los logs.
Para revertir el rollback, vuelva a desplegar con latest:
sh
docker compose pull auth-backend
docker compose up -d --no-deps auth-backendWARNING
- El siguiente despliegue del servicio por pipeline vuelve a
<rama>-latest. Para que el rollback sea definitivo, revierta el commit en la rama y deje que el pipeline publique una nueva imagen. - En los backends,
entrypoint.shaplica migraciones al arrancar, pero volver a una imagen anterior no revierte migraciones. Si la versión nueva incluía migraciones incompatibles, evalúe revertirlas conpython manage.py migrate <app> <migracion>antes del rollback.
Ejecutar comandos dentro de un contenedor
sh
# Shell interactiva (los backends corren como appuser)
docker compose exec backend-seleccion-postulantes bash
# Comando puntual
docker compose exec auth-backend python manage.py showmigrationsLos frontends usan nginx:alpine, que solo incluye sh:
sh
docker compose exec frontend-portal-admin-seleccion-postulantes shLos comandos de gestión disponibles se describen en Scripts útiles de los backends.
Archivos de los backends
Los archivos de los backends persisten en el host, fuera de los contenedores:
${DEPLOY_BASE_PATH}/idp/storage/{public,private}
${DEPLOY_BASE_PATH}/seleccionador/storage/{public,private}Recrear o eliminar un contenedor no afecta estos directorios. Inclúyalos en el respaldo del entorno junto con las bases de datos.
Detener servicios
sh
# Detener un servicio (no se reinicia automáticamente)
docker compose stop frontend-estacion-examen
# Volver a iniciarlo
docker compose start frontend-estacion-examenDANGER
Evite docker compose down -v en los stacks: aunque los volúmenes actuales son directorios del host (bind mounts), el comando elimina contenedores y redes del stack y deja todos los servicios fuera de línea hasta un nuevo despliegue.
Limpieza de imágenes
Cada despliegue descarga nuevas imágenes; las anteriores quedan sin etiqueta y ocupan disco:
sh
docker image prune -fPara eliminar también las imágenes no usadas por ningún contenedor (incluye tags antiguos que podrían servir para rollback):
sh
docker image prune -a -f