Git corrupto en la reconstrucción del lanzador de la aplicación

Después de actualizar docker_manager a través de la API (lo que pareció ir bien), el panel de Administrador simplemente mostró una página vacía, aunque el resto del foro parecía funcionar.

Para resolver esto, recurrí a ejecutar:

./launcher rebuild app

Sin embargo, durante ese proceso, se encontró con errores:

I, [2025-07-14T08:54:06.062789 #1]  INFO -- : 
> cd /var/www/discourse  && sudo -H -E -u discourse bash -c '
  set -o errexit
  if [ $(git rev-parse --is-shallow-repository) == "true" ]; then
      git remote set-branches --add origin main
      git remote set-branches origin tests-passed
      git fetch --depth 1 origin tests-passed
  else
      git fetch --tags --prune-tags --prune --force origin
  fi
'
error: el archivo pack .git/objects/pack/pack-581fe47ace192793da04d01989a4d1a7f0e6103c.pack no coincide con el índice
error: el archivo pack .git/objects/pack/pack-581fe47ace192793da04d01989a4d1a7f0e6103c.pack no coincide con el índice
error: el archivo pack .git/objects/pack/pack-581fe47ace192793da04d01989a4d1a7f0e6103c.pack no coincide con el índice
error: el archivo pack .git/objects/pack/pack-581fe47ace192793da04d01989a4d1a7f0e6103c.pack no coincide con el índice

… y el mensaje error: packfile se sigue repitiendo hasta que se interrumpe.

Por lo que parece, el repositorio git se ha corrompido. ¿Pero qué repositorio git?
Ni siquiera tengo una carpeta /var/www/discourse, así que supongo que esto está dentro de un volumen del contenedor?

Estoy un poco perplejo. ¡Gracias por la ayuda!

¿A qué te refieres con eso?

Normalmente actualizarías docker_manager a través de la UI.

¡Ah! Me equivoqué. Quise decir UI, no API. Lo corregiré enseguida.

1 me gusta

Intenté resolverlo iniciando y entrando en el contenedor de la aplicación:

./launcher start app
./launcher enter app

Luego verifiqué que el error ocurría al llamar al comando git como el usuario discourse:

cd /var/www/discourse
sudo -H -E -u discourse bash -c 'git fetch --tags --prune-tags --prune --force origin'

Resultando en:

error: packfile .git/objects/pack/pack-581fe47ace192793da04d01989a4d1a7f0e6103c.pack does not match index
error: packfile .git/objects/pack/pack-581fe47ace192793da04d01989a4d1a7f0e6103c.pack does not match index
error: packfile .git/objects/pack/pack-581fe47ace192793da04d01989a4d1a7f0e6103c.pack does not match index
etc..

Intenté resolverlo renombrando discourse y clonando uno nuevo:

cd /var/www
mv discourse discourse-old
git clone https://github.com/discourse/discourse.git
chown -R discourse:discourse discourse

Una vez clonado, intenté ejecutar de nuevo el git fetch ¡sin errores!

cd /var/www/discourse
sudo -H -E -u discourse bash -c 'git fetch --tags --prune-tags --prune --force origin'

Pero al salir del shell del contenedor e intentar reconstruir de nuevo con ./launcher rebuild app, obtuve el mismo error.

¿Utiliza ./launcher rebuild app un contenedor diferente al que entra ./launcher enter app?

1 me gusta

sí, hay dos niveles de git, uno exterior.

tu error parece ocurrir dentro del contenedor… ¡muy extraño!

¡Finalmente logré que funcionara!
Creo que fue una combinación entre un git corrupto y el resultado de una actualización previa de Docker. Lo resolví podando todos los contenedores e imágenes de Docker:

cd /opt/discourse
./launcher stop app
docker container prune
docker image prune -a
./launcher rebuild app

Esto resultó/terminó con:

Actualización Completa
----------------
Las estadísticas del optimizador no son transferidas por pg_upgrade.
Una vez que inicie el nuevo servidor, considere ejecutar:
    /usr/lib/postgresql/15/bin/vacuumdb --all --analyze-in-stages

Ejecutar este script eliminará los archivos de datos del clúster antiguo:
    ./delete_old_cluster.sh
-------------------------------------------------------------------------------------
ACTUALIZACIÓN DE POSTGRES COMPLETA

La base de datos antigua 13 se almacena en /shared/postgres_data_old

Para completar la actualización, reconstruya nuevamente usando:

./launcher rebuild app
-------------------------------------------------------------------------------------

Al ejecutar la reconstrucción nuevamente, comenzó a funcionar completamente:

./launcher rebuild app
1 me gusta