./launcher entre dans l'application, tout reconstruit

Utilisateur inexpérimenté ici, avec les quelques lignes de transcription suivantes pour lancer la discussion :

# ./launcher enter app
x86_64 arch detected.

WARNING: We are about to start downloading the Discourse base image
This process may take anywhere between a few minutes to an hour, depending on your network speed

Please be patient

2.0.20240602-0023: Pulling from discourse/base
728328ac3bde: Extracting [=============================>                     ]  18.68MB/31.43MB
1c0ca3c0af81: Download complete
...

Ce n’est pas ce à quoi je m’attendais.

Entrer la commande docker ps me montre qu’un conteneur avec une sorte de Discourse est déjà en cours d’exécution. Tout ce que je veux faire, c’est obtenir un shell dans ce conteneur en cours d’exécution… pas reconstruire toute l’application. En effet, à l’intérieur du script ./launcher (autour de la ligne 746), il semble que la commande enter pour ./launcher est censée faire ce que j’attendais… à savoir, émettre la commande

docker exec -it app /bin/bash

Y a-t-il une raison impérieuse de faire un tas d’autres choses avant de le faire ? Si oui, s’il vous plaît éclairez-moi ; sinon, peut-être que quelqu’un avec de l’expérience et des compétences peut transformer cette question en une suggestion utile. Merci.

1 « J'aime »

Oui, cela fait au moins un an que cela se produit. Heureusement, le téléchargement d’une nouvelle image ne prend généralement pas très longtemps, et cela ne fait pas grand-chose d’autre avant de vous ramener dans le shell.

Cela encombre cependant le disque inutilement avec une série d’images qui ne sont jamais utilisées. Peut-être qu’elles ont un but qui n’est pas immédiatement apparent.

Cela ressemble à un bug ? Pourquoi tenter d’entrer dans le conteneur téléchargerait-il une nouvelle image ?

Je remarque que cela ne se produit qu’une seule fois… si vous exécutez ./launcher enter app une deuxième fois, il ignore la vérification de l’image. Peut-être y a-t-il un compromis ici…

N’est-ce pas parce qu’à ce moment-là, l’image est déjà téléchargée ?

Oui, mais pourquoi le ferait-il en premier lieu ?
Vous essayez d’entrer dans le conteneur existant. C’est tout.

Il fait un git pull et récupère une nouvelle image car lorsqu’il ne le faisait pas, beaucoup de gens avaient des problèmes car les choses étaient obsolètes.

Si vous avez une raison de ne pas faire de pull, utilisez plutôt la commande docker run.

1 « J'aime »

Je pensais que c’était peut-être la raison. Équilibrer une logique de fer avec les particularités des attentes des utilisateurs n’est jamais simple.

J’ai dû apprendre cela à mes dépens. Maintenant que je le sais, je peux comprendre la décision de conception.

Merci pour vos réponses et pour cet excellent logiciel.

1 « J'aime »

Il ne reconstruit pas tout le conteneur. Il fait juste un git pull de docker_discourse, récupère de nouvelles images de base, puis les place dans le conteneur comme vous l’attendez. C’est pourquoi, après la première fois, il ne le fait plus. À moins que vous n’ayez un espace disque extrêmement faible ou que 10 à 30 secondes ne représentent beaucoup de temps, ce n’est pas vraiment un problème.

2 « J'aime »