Skip to content

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           # manuales

INFO

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 ps

Columna STATUS:

EstadoSignificado
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
RestartingEl proceso termina y Docker lo reinicia (restart: unless-stopped)

Detalle del último health check:

sh
docker inspect --format '{{json .State.Health}}' auth-backend

Uso de recursos:

sh
docker stats --no-stream

Logs ​

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-backend

En 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-backend

TIP

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-postulantes

Requiere 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:

  1. Identificar el tag en GitLab: Deploy → Container Registry del repositorio, o el SHA del commit en el historial de la rama.

  2. Desplegar ese tag solo para el servicio afectado, sobrescribiendo IMAGE_TAG en la línea de comandos (tiene prioridad sobre .env):

    sh
    IMAGE_TAG=main-a1b2c3d4 docker compose pull auth-backend
    IMAGE_TAG=main-a1b2c3d4 docker compose up -d --no-deps auth-backend
  3. Verificar con docker compose ps y los logs.

Para revertir el rollback, vuelva a desplegar con latest:

sh
docker compose pull auth-backend
docker compose up -d --no-deps auth-backend

WARNING

  • 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.sh aplica migraciones al arrancar, pero volver a una imagen anterior no revierte migraciones. Si la versión nueva incluía migraciones incompatibles, evalúe revertirlas con python 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 showmigrations

Los frontends usan nginx:alpine, que solo incluye sh:

sh
docker compose exec frontend-portal-admin-seleccion-postulantes sh

Los 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-examen

DANGER

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 -f

Para 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