./launcher entra l'app ricostruisce tutto

Utente inesperto qui, con le seguenti righe di trascrizione per avviare la discussione:

# ./launcher enter app                                                                                                                                                                         
Rilevata architettura x86_64.                                                                                                                                                                                                   
                                                                                                                                                                                                                        
ATTENZIONE: Stiamo per iniziare a scaricare l'immagine base di Discourse                                                                                                                                                     
Questo processo potrebbe richiedere da pochi minuti a un'ora, a seconda della velocità della tua rete                                                                                                                        
                                                                                                                                                                                                                        
Sii paziente                                                                                                                                                                                                       
                                                                                                                                                                                                                        
2.0.20240602-0023: Estrazione di discourse/base                                                                                                                                                                          
728328ac3bde: Estrazione [=============================>                     ]  18.68MB/31.43MB                                                                                                                         
1c0ca3c0af81: Download completato
...

Questo non è quello che mi aspettavo accadesse.

Inserendo il comando docker ps mi mostra che c’è già un container con una qualche versione di Discourse in esecuzione. Tutto quello che voglio fare è ottenere una shell in quel container in esecuzione… non ricostruire l’intera applicazione. Infatti, all’interno dello script ./launcher (intorno alla riga 746) sembra che il comando enter per ./launcher dovrebbe fare quello che mi aspettavo… ovvero, emettere il comando

docker exec -it app /bin/bash

C’è un motivo convincente per fare un sacco di altro lavoro prima di farlo? Se sì, per favore illuminami; se no, forse qualcuno con esperienza e competenza può trasformare questa domanda in un suggerimento utile. Grazie.

1 Mi Piace

Sì, lo fa da almeno un anno. Fortunatamente, non ci vuole molto tempo per scaricare una nuova immagine e non sembra fare molto altro prima di farti accedere alla shell.

Tuttavia, ingombra inutilmente il disco con un sacco di immagini che non vengono mai utilizzate. Forse hanno uno scopo che non è immediatamente evidente.

Sembra un bug? Perché il tentativo di entrare nel container dovrebbe scaricare una nuova immagine?

Noto che lo fa solo una volta… se esegui ./launcher enter app una seconda volta, salta il controllo dell’immagine. Forse c’è qualche compromesso qui…

Non è perché a quel punto l’immagine è già stata scaricata?

Sì, ma perché dovrebbe farlo in primo luogo?

Stai cercando di entrare nel container esistente. Questo è tutto.

Esegue git pull e scarica una nuova immagine perché quando non lo faceva, molte persone avevano problemi perché le cose erano obsolete.

Se hai un motivo per non eseguire un pull, esegui invece un comando docker run.

1 Mi Piace

Pensavo potesse essere questo il motivo. Bilanciare la logica pura con le particolarità delle aspettative degli utenti non è mai facile.

Ho dovuto impararlo a mie spese. Ora che lo so, posso capire la decisione di progettazione.

Grazie per le risposte e per l’eccellente software.

1 Mi Piace

Non sta ricostruendo l’intero container. Sta solo facendo un git pull di docker_discourse e scaricando nuove immagini di base e poi inserendole nel container come ti aspetti. Ecco perché dopo la prima volta non lo fa più. A meno che tu non abbia pochissimo spazio su disco o 10-30 secondi sia molto tempo, non è davvero un problema.

2 Mi Piace