Reemplaza el docker run inline (alpine sh -c "apk add ...") por una imagen construida desde scripts/tmux-host/Dockerfile, con WORKDIR en la raiz del lab para que docker exec y lab-session.sh ya arranquen posicionados ahi sin cd manual. Agrega scripts/tmux-host/healthcheck.sh (via entrypoint.sh, background del propio contenedor): cada 30 min chequea conectividad real (curl a gitea.cruzcloud.net) y la existencia de la sesion tmux "lab". La red solo se loguea+notifica por Telegram (nunca se intenta corregir desde el contenedor); la sesion tmux si se recrea sola si falta. Log persistente en /DATA/AppData/k3d-lab-v3/tmux-host/logs/health.log. Reusa el bot/chat_id de Telegram ya configurado en scripts/lab-agent/. Validado en un contenedor descartable (tmux-host-test, intervalo de 60s): confirmado WORKDIR correcto via docker exec, creacion inicial de la sesion y recreacion automatica tras un kill-session manual. Co-Authored-By: Claude Sonnet 5 <[email protected]> Claude-Session: https://claude.ai/code/session_012xyPak6HWFmBCqXrvFsejL
26 lines
945 B
Bash
Executable File
26 lines
945 B
Bash
Executable File
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
|
|
# Reconecta a la sesion tmux persistente "lab" dentro del contenedor
|
|
# tmux-host. Si la sesion no existe (p.ej. el contenedor se acaba de
|
|
# recrear), la crea. El comando es siempre el mismo sin importar el
|
|
# estado previo.
|
|
#
|
|
# Ver docs-portal: arquitectura/sesion-tmux-persistente.md
|
|
|
|
CONTAINER="tmux-host"
|
|
SESSION="lab"
|
|
# Repo raiz del lab (CLAUDE.md, apps-registry/, platform-infra/, scripts/).
|
|
# Mismo path que el WORKDIR de scripts/tmux-host/Dockerfile -- pasado
|
|
# explicito acá (-c) para no depender de que docker exec herede el WORKDIR
|
|
# de la imagen.
|
|
WORKDIR="/DATA/AppData/k3d-lab-v3/lab-cruzcloud"
|
|
|
|
if ! docker ps --format '{{.Names}}' | grep -qx "$CONTAINER"; then
|
|
echo "El contenedor '$CONTAINER' no esta corriendo. Verifica con 'docker ps -a'." >&2
|
|
exit 1
|
|
fi
|
|
|
|
docker exec -it "$CONTAINER" tmux attach -t "$SESSION" || \
|
|
docker exec -it "$CONTAINER" tmux new -s "$SESSION" -c "$WORKDIR"
|