Welcher Befehl aktualisiert nur das Docker-Image?

Welcher Befehl aktualisiert nur das Docker-Image?

/var/discourse# ./launcher -h
Usage: launcher COMMAND CONFIG [--skip-prereqs] [--docker-args STRING]
Commands:
    start:       Start/initialize a container
    stop:        Stop a running container
    restart:     Restart a container
    destroy:     Stop and remove a container
    enter:       Open a shell to run commands inside the container
    logs:        View the Docker logs for a container
    bootstrap:   Bootstrap a container for the config based on a template
    run:         Run the given command with the config in the context of the last bootstrapped image
    rebuild:     Rebuild a container (destroy old, bootstrap, start new)
    cleanup:     Remove all containers that have stopped for > 24 hours
    start-cmd:   Generate docker command used to start container

Options:
    --skip-prereqs             Don't check launcher prerequisites
    --docker-args              Extra arguments to pass when running docker
    --skip-mac-address         Don't assign a mac address
    --run-image                Override the image used for running the container

Mein Szenario ist:
Wenn beim Build ein Update des Docker-Images erforderlich ist, aber die Netzwerkverbindung des Servers sehr schlecht ist, bleibt der Prozess sehr lange auf dem Schritt des Image-Updates hängen. Ich würde gerne einen Befehl haben, der speziell für das Aktualisieren des Docker-Images gedacht ist. Dann könnte ich das Image im Voraus separat aktualisieren und anschließend in Ruhe den Code bauen. Zum Beispiel:

./launcher pull-docker

Ich weiß, dass ich mir selbst eine funktionierende Lösung zusammenbasteln kann, aber ich würde es trotzdem bevorzugen, wenn es offiziell von den Entwicklern angeboten würde.

hmmm, der einzige weg, den ich kenne, ist, zuerst das launcher-skript zu aktualisieren:

cd /var/discourse
git pull

und dann das standard-image-tag zu finden, das der launcher verwendet:

grep -m1 '^image=' launcher

die ausgabe sollte so aussehen:

image="discourse/base:2.0.20260915-0028"

und dann ausführen:

docker pull discourse/base:2.0.20260915-0028

wenn du danach ./launcher rebuild app ausführst, sollte der download übersprungen werden, glaube ich.

es sollte stehen Status: Image is up to date for discourse/base:2.0.20260915-0028, wenn du den rebuild ausführst…

Danke für die Antwort. Ich aktualisiere aktuell auf ähnliche Weise, aber es ist etwas umständlich. Ich möchte gerne ein eigenes Automatisierungsskript schreiben, habe aber Angst, dass es nach einem offiziellen Update nicht mehr kompatibel sein könnte.

Das kannst du mit einem ausführbaren Bash-Skript machen und sogar einen Cron-Job verwenden, um es zu automatisieren. Mir ist nicht klar, warum es in absehbarer Zeit inkompatibel werden sollte.

Ich meinte, dass es in Zukunft zu Inkompatibilitäten kommen könnte und ich das Skript dann jedes Mal überprüfen müsste. Das würde zweifellos zusätzlichen Aufwand bedeuten. Ich nehme hier einfach den Worst Case an :joy:. Was die Lösung des Problems angeht: Am besten einfach erst mal loslegen und währenddessen anpassen.