Beschädigtes Git beim Neuerstellen der App im Launcher

Nach dem Upgrade von docker_manager über die API (was reibungslos zu funktionieren schien) rendert das Admin-Dashboard nur eine leere Seite, auch wenn der Rest des Forums zu funktionieren scheint.

Um dies zu beheben, habe ich Folgendes ausgeführt:

./launcher rebuild app

Während dieses Prozesses traten jedoch Fehler auf:

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: 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
error: packfile .git/objects/pack/pack-581fe47ace192793da04d01989a4d1a7f0e6103c.pack does not match index

… und der error: packfile wird einfach weiter gespammt, bis er unterbrochen wird.

Nach allem sieht es so aus, als wäre das git-Repository beschädigt worden. Aber welches Git-Repository?
Ich habe nicht einmal einen Ordner /var/www/discourse, daher gehe ich davon aus, dass dies innerhalb eines Container-Volumes geschieht?

Ich bin etwas ratlos. Danke für die Hilfe!

Was meinst du damit?

Normalerweise würdest du docker_manager über die Benutzeroberfläche aktualisieren.

Aah! Mein Fehler. Ich meinte die UI, nicht die API. Ich korrigiere das sofort.

1 „Gefällt mir“

Ich habe versucht, das Problem zu lösen, indem ich den App-Container gestartet und betreten habe:

./launcher start app
./launcher enter app

Dann habe ich überprüft, ob der Fehler beim Aufruf des Git-Befehls als Benutzer discourse auftritt:

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

Dies führte zu:

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

Ich habe versucht, das Problem zu lösen, indem ich discourse umbenannt und ein neues geklont habe:

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

Nach dem Klonen habe ich versucht, git fetch erneut auszuführen, ohne Fehler!

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

Aber als ich die Container-Shell verlassen habe und versucht habe, mit ./launcher rebuild app erneut zu rebuilden, erhielt ich denselben Fehler.

Verwendet ./launcher rebuild app einen anderen Container als den, den ./launcher enter app betritt?

1 „Gefällt mir“

Ja, es gibt zwei Ebenen von Git, eine außerhalb.

Ihr Fehler scheint tatsächlich innerhalb des Containers aufzutreten … sehr seltsam!

Endlich hat es funktioniert!
Ich glaube, es war eine Mischung aus einem beschädigten git und dem Ergebnis eines früheren Docker-Upgrades. Ich habe es gelöst, indem ich alle Docker-Container und -Images bereinigt habe:

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

Dies führte zu folgendem Ergebnis:

Upgrade Complete
----------------
Optimizer statistics are not transferred by pg_upgrade.
Once you start the new server, consider running:
    /usr/lib/postgresql/15/bin/vacuumdb --all --analyze-in-stages

Running this script will delete the old cluster's data files:
    ./delete_old_cluster.sh
-------------------------------------------------------------------------------------
UPGRADE OF POSTGRES COMPLETE

Old 13 database is stored at /shared/postgres_data_old

To complete the upgrade, rebuild again using:

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

Durch erneutes Ausführen des Rebuilds funktionierte es vollständig:

./launcher rebuild app
1 „Gefällt mir“