From 8d6fe19b5aab0b6c528d6ad5cd8f11d7243fb212 Mon Sep 17 00:00:00 2001 From: BenV <165034+benv666@users.noreply.github.com> Date: Tue, 9 Sep 2025 09:50:05 +0200 Subject: [PATCH] Feat: pull images before restart --- rocketpool-cli/service/service.go | 7 +++++++ shared/services/rocketpool/client.go | 12 ++++++++++++ 2 files changed, 19 insertions(+) diff --git a/rocketpool-cli/service/service.go b/rocketpool-cli/service/service.go index d4498d233..e637e3647 100644 --- a/rocketpool-cli/service/service.go +++ b/rocketpool-cli/service/service.go @@ -306,6 +306,13 @@ func configureService(c *cli.Context) error { return nil } + // Let's reduce potential downtime by pulling the new containers before restarting + fmt.Println("Pulling potential new container images...") + err = rp.PullComposeImages(getComposeFiles(c)) + if err != nil { + fmt.Fprintf(os.Stderr, "Warning: couldn't pull new images for updated containers: %s\n", err.Error()) + } + fmt.Println() for _, container := range md.ContainersToRestart { fullName := fmt.Sprintf("%s_%s", prefix, container) diff --git a/shared/services/rocketpool/client.go b/shared/services/rocketpool/client.go index 438a555cb..995a1c4ff 100644 --- a/shared/services/rocketpool/client.go +++ b/shared/services/rocketpool/client.go @@ -723,6 +723,18 @@ func (c *Client) GetComposeImages(composeFiles []string) ([]string, error) { return strings.Fields(string(output)), nil } +func (c *Client) PullComposeImages(composeFiles []string) error { + cmd, err := c.compose(composeFiles, "pull -q") + if err != nil { + return err + } + err = c.printOutput(cmd) + if err != nil { + return fmt.Errorf("error pulling images: %w", err) + } + return nil +} + type DockerImage struct { Repository string `json:"Repository"` Tag string `json:"Tag"`