Ciao a tutti. Sembra una domanda stupida, ma la farò comunque.
Mi sono trovato bloccato in questo familiare ciclo:
Aggiornamento fallito.
Prova ./launcher rebuild app, ma spazio su disco insufficiente. (Meno di 5 GB liberi.)
./launcher cleanup, che sembra aver liberato un po’ di spazio su disco. (Oltre 5 GB liberi.)
VAI A 2.
Dato che non so ancora quali operazioni siano sicure (cioè non distruggano i dati del mio sito), ho proceduto con cautela, sperando di non dover ripristinare da un backup. Ho finito per fare questo e sembra aver funzionato per me.
./launcher stop app
./launcher cleanup, che ha liberato molto più spazio di prima, il che mi ha subito reso nervoso.
git pull
./launcher rebuild app
Questo non solo ha funzionato, ma ha portato a un sito funzionante con dati intatti e con circa 2 GB di spazio libero in più rispetto a prima.
Ora non sono sicuro se quello che ho fatto sia stato brillante, ovvio, o rischioso e abbia semplicemente funzionato. Vorrei capire un po’ meglio perché ho ottenuto i risultati che ho ottenuto e se quello sia stato un modo sensato di aggiornare.
docker crea un sacco di file quando crea un container (includi i container che crea) quando crei un nuovo container, hai ancora i vecchi container (e anche le immagini del disco). Questo è ciò che viene rimosso quando esegui una pulizia.
È un po’ più sicuro eseguire il comando di pulizia mentre discourse è in esecuzione, perché il comando di pulizia non eliminerà un container in esecuzione. Se qualcosa va storto con la ricostruzione, puoi ancora riavviare il vecchio container se esiste.
Quindi, rimuoverei il passaggio (1) sopra e il passaggio (3) è non necessario perché ./launcher esegue un pull (in passato, non lo faceva).
Quindi sì, se lo spazio su disco è così limitato da non avere spazio per due immagini, allora devi distruggerle tutte prima di costruirne una nuova, il che ti mette in una brutta situazione se per qualche motivo non riesci a costruire una nuova immagine. In tal caso, hai davvero bisogno di più spazio su disco. La cosa più semplice da fare è spostare i backup su S3.
Sono sorpreso da “lo spazio su disco è così limitato” nella mia situazione. Eseguo la pulizia, ho 7,9 GB liberi, poi eseguo ./launcher rebuild app e si rifiuta di finire. 7,9 GB liberi quando voglio ricostruire l’app sono davvero così pochi?!
(AGGIORNAMENTO: Ora capisco come può succedere. Lascio questo qui per gli astanti da trovare in una ricerca sul web. Per favore, leggete l’intera discussione, gente!)
Per questa particolare ricostruzione era necessario scaricare una nuova immagine di base
Sarebbe particolarmente utile includere queste informazioni in qualche modo nel processo di aggiornamento, sia come avviso anticipato “Dobbiamo scaricare una nuova immagine di base, quindi probabilmente hai bisogno di 3 GB di spazio in più del normale per aggiornare. Se esaurisci lo spazio, è probabilmente per questo” o come errore più dettagliato quando il processo di aggiornamento/ricostruzione esaurisce lo spazio. Altrimenti, ci ritroviamo in un ciclo infinito di “Ecco! C’è tutto lo spazio di cui (sembra) hai bisogno!” (Picard con il braccio teso.)
Sarebbe anche particolarmente utile non dover scavare così tanto per trovare l’opzione per usare ./launcher rebuild app --skip-prereqs quando si intende “Fidati di me, fratello. Ho abbastanza spazio su disco.” Sì, metti avvisi in grassetto, rosso, carattere 72.
Questo “la nuova immagine di base rende l’aggiornamento complicato” accade abbastanza raramente da farcelo dimenticare, ma causa problemi durante l’aggiornamento. Dov’è il posto appropriato per un articolo su questo che centralizzi ciò che sappiamo su come aggirare i problemi?