tools: add helper to inspect and repair libretime_config volume
This commit is contained in:
parent
e9b3d8c12d
commit
c47f4c2e4c
79
scripts/fix-config-volume.sh
Normal file
79
scripts/fix-config-volume.sh
Normal file
@ -0,0 +1,79 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Script helper: inspecciona el montaje de config y (opcionalmente) elimina y regenera
|
||||
# Uso:
|
||||
# bash scripts/fix-config-volume.sh # inspecciona y recrea config-generator
|
||||
# bash scripts/fix-config-volume.sh --force-delete # detiene stack, borra volumen libretime_config y regenera
|
||||
|
||||
ROOT_DIR=$(cd "$(dirname "$0")/.." && pwd)
|
||||
cd "$ROOT_DIR"
|
||||
|
||||
echo "== comprobar que docker existe =="
|
||||
if ! command -v docker >/dev/null 2>&1; then
|
||||
echo "ERROR: docker no encontrado en PATH. Instala/abre Docker Desktop y vuelve a intentarlo." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "== docker compose ps =="
|
||||
docker compose -f docker-compose.easypanel.yml ps || true
|
||||
|
||||
CID=$(docker compose -f docker-compose.easypanel.yml ps -q api || true)
|
||||
echo "API CID: ${CID:-<no-cid>}"
|
||||
|
||||
if [ -n "${CID:-}" ]; then
|
||||
echo "== mounts del contenedor api =="
|
||||
docker inspect --format '{{json .Mounts}}' "$CID" | jq . || docker inspect --format '{{json .Mounts}}' "$CID" || true
|
||||
|
||||
echo "== contenido que ve la API en /etc/libretime =="
|
||||
docker compose -f docker-compose.easypanel.yml exec api sh -c 'ls -la /etc/libretime || true; sed -n "1,200p" /etc/libretime/config.yml || true' || true
|
||||
else
|
||||
echo "Contenedor API no está en ejecución o no se encontró CID. Continuamos con otras comprobaciones."
|
||||
fi
|
||||
|
||||
echo "== archivo local ./config.local.yml (si existe) =="
|
||||
if [ -f ./config.local.yml ]; then
|
||||
sed -n '1,200p' ./config.local.yml || true
|
||||
else
|
||||
echo "no existe ./config.local.yml"
|
||||
fi
|
||||
|
||||
echo "== inspeccionar volumen libretime_config =="
|
||||
docker run --rm -v libretime_config:/tmp alpine sh -c 'ls -la /tmp || true; sed -n "1,200p" /tmp/config.yml || true' || true
|
||||
|
||||
echo "== recrear config-generator (no-deps) para intentar generar config.yml =="
|
||||
docker compose -f docker-compose.easypanel.yml up -d --no-deps --force-recreate config-generator || true
|
||||
sleep 2
|
||||
docker compose -f docker-compose.easypanel.yml logs --tail 200 config-generator || true
|
||||
|
||||
echo "== volver a inspeccionar volumen libretime_config =="
|
||||
docker run --rm -v libretime_config:/tmp alpine sh -c 'ls -la /tmp || true; sed -n "1,200p" /tmp/config.yml || true' || true
|
||||
|
||||
if [ "${1:-}" = "--force-delete" ]; then
|
||||
echo "\n== OPCIÓN: eliminar y regenerar el volumen libretime_config (se pide confirmación) =="
|
||||
read -p "¿Deseas detener el stack y borrar el volumen libretime_config? (y/N): " confirm
|
||||
if [ "$confirm" = "y" ]; then
|
||||
echo "Deteniendo stack..."
|
||||
docker compose -f docker-compose.easypanel.yml down || true
|
||||
|
||||
mkdir -p backups
|
||||
echo "Haciendo backup (si existe) del config del volumen a ./backups/config.yml.bak"
|
||||
docker run --rm -v libretime_config:/tmp -v "$(pwd)/backups":/backup alpine sh -c 'cp -a /tmp/config.yml /backup/config.yml.bak || true; ls -la /tmp || true' || true
|
||||
|
||||
echo "Eliminando volumen libretime_config..."
|
||||
docker volume rm libretime_config || true
|
||||
|
||||
echo "Regenerando config-generator para crear un nuevo config.yml en el volumen limpio..."
|
||||
docker compose -f docker-compose.easypanel.yml up -d --no-deps --force-recreate config-generator || true
|
||||
sleep 2
|
||||
docker compose -f docker-compose.easypanel.yml logs --tail 200 config-generator || true
|
||||
echo "Contenido del nuevo volumen:"
|
||||
docker run --rm -v libretime_config:/tmp alpine sh -c 'ls -la /tmp; sed -n "1,200p" /tmp/config.yml || true' || true
|
||||
|
||||
echo "Listo. Reinicia la API con: docker compose -f docker-compose.easypanel.yml up -d --no-deps --force-recreate api"
|
||||
else
|
||||
echo "Abandonado: no se eliminará el volumen."
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "== fin del script =="
|
||||
Loading…
x
Reference in New Issue
Block a user